From: Simon McVittie Date: Sat, 7 Feb 2026 14:24:37 +0000 (+0000) Subject: d/patches: Update to commit 49.3-26-gcdd6b186c X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~34^2~4 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=fec0f019e777f8fed64b3f927fda8642fd884568;p=gnome-shell.git d/patches: Update to commit 49.3-26-gcdd6b186c This incorporates most of the bug fixes backported from 50.beta or earlier that will be in 49.4. I've excluded changes from upstream gnome-shell!4058 for now, since those want a newer version of mutter and will log warnings until we have one. --- diff --git a/debian/patches/Update-Czech-translation.patch b/debian/patches/Update-Czech-translation.patch new file mode 100644 index 000000000..a3c949826 --- /dev/null +++ b/debian/patches/Update-Czech-translation.patch @@ -0,0 +1,1090 @@ +From: Daniel Rusek +Date: Wed, 4 Feb 2026 22:28:44 +0000 +Subject: Update Czech translation + +Origin: upstream, 49.4, commit:85bce39b5a7185f3e9dc1404352c44d96d02a89a +--- + po/cs.po | 324 ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 165 insertions(+), 159 deletions(-) + +diff --git a/po/cs.po b/po/cs.po +index 85f385c..357dc0c 100644 +--- a/po/cs.po ++++ b/po/cs.po +@@ -14,8 +14,8 @@ msgid "" + msgstr "" + "Project-Id-Version: gnome-shell\n" + "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues/\n" +-"POT-Creation-Date: 2025-08-21 05:06+0000\n" +-"PO-Revision-Date: 2025-08-21 16:56+0200\n" ++"POT-Creation-Date: 2026-02-03 14:30+0000\n" ++"PO-Revision-Date: 2026-02-04 23:26+0100\n" + "Last-Translator: Daniel Rusek \n" + "Language-Team: Czech \n" + "Language: cs\n" +@@ -23,7 +23,7 @@ msgstr "" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" + "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +-"X-Generator: Poedit 3.6\n" ++"X-Generator: Poedit 3.8\n" + "X-Project-Style: gnome\n" + "X-DL-Lang: cs\n" + "X-DL-Module: gnome-shell\n" +@@ -133,7 +133,7 @@ msgid "Record a screencast interactively" + msgstr "Zaznamenat dění na obrazovce interaktivně" + + #: data/50-gnome-shell-system.xml:6 +-#: data/X-GNOME-Shell-System.directory.desktop.in:2 js/ui/messageTray.js:1312 ++#: data/X-GNOME-Shell-System.directory.desktop.in:2 js/ui/messageTray.js:1314 + msgid "System" + msgstr "Systém" + +@@ -605,7 +605,7 @@ msgstr "Podrobnosti o chybě" + msgid "Copy Error" + msgstr "Zkopírovat chybu" + +-#: js/gdm/authPrompt.js:156 js/gdm/loginDialog.js:514 ++#: js/gdm/authPrompt.js:157 js/gdm/loginDialog.js:514 + #: js/ui/audioDeviceSelection.js:60 js/ui/components/networkAgent.js:114 + #: js/ui/components/polkitAgent.js:144 js/ui/endSessionDialog.js:437 + #: js/ui/extensionDownloader.js:276 js/ui/shellMountOperation.js:382 +@@ -613,7 +613,7 @@ msgstr "Zkopírovat chybu" + msgid "Cancel" + msgstr "Zrušit" + +-#: js/gdm/authPrompt.js:324 js/ui/components/networkAgent.js:214 ++#: js/gdm/authPrompt.js:335 js/ui/components/networkAgent.js:214 + #: js/ui/components/networkAgent.js:234 js/ui/components/networkAgent.js:266 + #: js/ui/components/networkAgent.js:299 js/ui/components/networkAgent.js:338 + #: js/ui/components/networkAgent.js:351 js/ui/components/polkitAgent.js:286 +@@ -622,7 +622,7 @@ msgstr "Zrušit" + msgid "Password" + msgstr "Heslo" + +-#: js/gdm/loginDialog.js:330 ++#: js/gdm/loginDialog.js:327 + msgid "Choose Session" + msgstr "Vybrat sezení" + +@@ -736,11 +736,11 @@ msgstr "(nebo přejeďte prstem přes čtečku)" + msgid "(or place finger on reader)" + msgstr "(nebo přiložte prst na čtečku)" + +-#: js/misc/breakManager.js:770 ++#: js/misc/breakManager.js:774 + msgid "Break complete sound" + msgstr "Zvuk dokončení přestávky" + +-#: js/misc/breakManager.js:980 ++#: js/misc/breakManager.js:984 + #, javascript-format + msgid "%d second" + msgid_plural "%d seconds" +@@ -748,7 +748,7 @@ msgstr[0] "%d sekunda" + msgstr[1] "%d sekundy" + msgstr[2] "%d sekund" + +-#: js/misc/breakManager.js:986 ++#: js/misc/breakManager.js:990 + #, javascript-format + msgid "%d minute" + msgid_plural "%d minutes" +@@ -756,7 +756,7 @@ msgstr[0] "%d minuta" + msgstr[1] "%d minuty" + msgstr[2] "%d minut" + +-#: js/misc/breakManager.js:992 ++#: js/misc/breakManager.js:996 + #, javascript-format + msgid "%d hour" + msgid_plural "%d hours" +@@ -764,7 +764,7 @@ msgstr[0] "%d hodina" + msgstr[1] "%d hodiny" + msgstr[2] "%d hodin" + +-#: js/misc/breakManager.js:998 ++#: js/misc/breakManager.js:1002 + #, javascript-format + msgid "%d day" + msgid_plural "%d days" +@@ -773,7 +773,7 @@ msgstr[1] "%d dny" + msgstr[2] "%d dnů" + + #. %s will be replaced with a string that describes a time interval, such as “2 minutes”, “40 seconds” or “1 hour” +-#: js/misc/breakManager.js:1081 ++#: js/misc/breakManager.js:1085 + #, javascript-format + msgid "It will be time for a break in %s" + msgid_plural "It will be time for a break in %s" +@@ -781,24 +781,24 @@ msgstr[0] "Za %s bude čas na přestávku" + msgstr[1] "Za %s bude čas na přestávku" + msgstr[2] "Za %s bude čas na přestávku" + +-#: js/misc/breakManager.js:1089 ++#: js/misc/breakManager.js:1093 + msgid "Movement Break Soon" + msgstr "Blíží se pohybová přestávka" + +-#: js/misc/breakManager.js:1092 ++#: js/misc/breakManager.js:1096 + msgid "Eyesight Break Soon" + msgstr "Blíží se zraková přestávka" + +-#: js/misc/breakManager.js:1095 ++#: js/misc/breakManager.js:1099 + msgid "Break Soon" + msgstr "Blíží se přestávka" + +-#: js/misc/breakManager.js:1140 ++#: js/misc/breakManager.js:1144 + msgid "Movement Break in Progress" + msgstr "Pohybová přestávka probíhá" + + #. %s will be replaced with a string that describes a time interval, such as “2 minutes”, “40 seconds” or “1 hour” +-#: js/misc/breakManager.js:1143 ++#: js/misc/breakManager.js:1147 + #, javascript-format + msgid "Continue moving around for %s" + msgid_plural "Continue moving around for %s" +@@ -806,12 +806,12 @@ msgstr[0] "Pokračujte v pohybu po dobu %s" + msgstr[1] "Pokračujte v pohybu po dobu %s" + msgstr[2] "Pokračujte v pohybu po dobu %s" + +-#: js/misc/breakManager.js:1149 ++#: js/misc/breakManager.js:1153 + msgid "Eyesight Break in Progress" + msgstr "Zraková přestávka probíhá" + + #. %s will be replaced with a string that describes a time interval, such as “2 minutes”, “40 seconds” or “1 hour” +-#: js/misc/breakManager.js:1152 ++#: js/misc/breakManager.js:1156 + #, javascript-format + msgid "Continue looking away for %s" + msgid_plural "Continue looking away for %s" +@@ -819,12 +819,12 @@ msgstr[0] "Pokračujte v dívání se jinam po dobu %s" + msgstr[1] "Pokračujte v dívání se jinam po dobu %s" + msgstr[2] "Pokračujte v dívání se jinam po dobu %s" + +-#: js/misc/breakManager.js:1158 ++#: js/misc/breakManager.js:1162 + msgid "Break in Progress" + msgstr "Přestávka probíhá" + + #. %s will be replaced with a string that describes a time interval, such as “2 minutes”, “40 seconds” or “1 hour” +-#: js/misc/breakManager.js:1161 ++#: js/misc/breakManager.js:1165 + #, javascript-format + msgid "%s left in your break" + msgid_plural "%s left in your break" +@@ -832,12 +832,12 @@ msgstr[0] "Do konce přestávky zbývá %s" + msgstr[1] "Do konce přestávky zbývají %s" + msgstr[2] "Do konce přestávky zbývá %s" + +-#: js/misc/breakManager.js:1200 ++#: js/misc/breakManager.js:1204 + msgid "Time for a Movement Break" + msgstr "Čas na pohybovou přestávku" + + #. %s will be replaced with a string that describes a time interval, such as “2 minutes”, “40 seconds” or “1 hour” +-#: js/misc/breakManager.js:1203 ++#: js/misc/breakManager.js:1207 + #, javascript-format + msgid "Take a break from the device and move around for %s" + msgid_plural "Take a break from the device and move around for %s" +@@ -845,12 +845,12 @@ msgstr[0] "Odpočiňte si od používání zařízení a pohybujte se po dobu %s + msgstr[1] "Dejte si přestávku od používání zařízení a pohybujte se po dobu %s" + msgstr[2] "Dejte si přestávku od používání zařízení a pohybujte se po dobu %s" + +-#: js/misc/breakManager.js:1209 ++#: js/misc/breakManager.js:1213 + msgid "Time for an Eyesight Break" + msgstr "Čas na zrakovou přestávku" + + #. %s will be replaced with a string that describes a time interval, such as “2 minutes”, “40 seconds” or “1 hour” +-#: js/misc/breakManager.js:1212 ++#: js/misc/breakManager.js:1216 + #, javascript-format + msgid "" + "Take a break from the screen. Look at least 6 meters away for at least %s" +@@ -866,12 +866,12 @@ msgstr[2] "" + "Odpočiňte si od používání obrazovky. Dívejte se ze vzdálenosti alespoň 6 " + "metrů po dobu %s" + +-#: js/misc/breakManager.js:1218 ++#: js/misc/breakManager.js:1222 + msgid "Time for a Break" + msgstr "Čas na přestávku" + + #. %s will be replaced with a string that describes a time interval, such as “2 minutes”, “40 seconds” or “1 hour” +-#: js/misc/breakManager.js:1221 ++#: js/misc/breakManager.js:1225 + #, javascript-format + msgid "It’s time to take a break. Get away from the device for %s!" + msgid_plural "It’s time to take a break. Get away from the device for %s!" +@@ -880,7 +880,7 @@ msgstr[1] "Je čas na přestávku. Odejděte od zařízení na %s!" + msgstr[2] "Je čas na přestávku. Odejděte od zařízení na %s!" + + #. %s will be replaced with a string that describes a time interval, such as “2 minutes”, “40 seconds” or “1 hour” +-#: js/misc/breakManager.js:1245 ++#: js/misc/breakManager.js:1249 + #, javascript-format + msgid "You were due to take a break %s ago" + msgid_plural "You were due to take a break %s ago" +@@ -888,11 +888,11 @@ msgstr[0] "Před dobou %s jste si měli dát přestávku" + msgstr[1] "Před dobou %s jste si měli dát přestávku" + msgstr[2] "Před dobou %s jste si měli dát přestávku" + +-#: js/misc/breakManager.js:1251 ++#: js/misc/breakManager.js:1255 + msgid "Break Overdue" + msgstr "Zpožděná přestávka" + +-#: js/misc/breakManager.js:1267 ++#: js/misc/breakManager.js:1271 + #, javascript-format + msgid "There is %s remaining in your break" + msgid_plural "There are %s remaining in your break" +@@ -900,28 +900,28 @@ msgstr[0] "Do konce vaší přestávky zbývá %s" + msgstr[1] "Do konce vaší přestávky zbývají %s" + msgstr[2] "Do konce vaší přestávky zbývá %s" + +-#: js/misc/breakManager.js:1273 ++#: js/misc/breakManager.js:1277 + msgid "Break Interrupted" + msgstr "Přestávka přerušena" + + #. Translators: As in "Delay the break" +-#: js/misc/breakManager.js:1351 ++#: js/misc/breakManager.js:1355 + msgid "Delay" + msgstr "Oddálit" + + #. Translators: As in "Skip the break" +-#: js/misc/breakManager.js:1373 js/ui/welcomeDialog.js:61 ++#: js/misc/breakManager.js:1377 js/ui/welcomeDialog.js:61 + msgid "Skip" + msgstr "Přeskočit" + + #. Translators: As in "Take the break" +-#: js/misc/breakManager.js:1395 ++#: js/misc/breakManager.js:1399 + msgid "Take" + msgstr "Vzít" + + #. Translators: This is a notification to warn the user that a + #. screen time break will start shortly. +-#: js/misc/breakManager.js:1458 ++#: js/misc/breakManager.js:1462 + #, javascript-format + msgid "Break in %d second" + msgid_plural "Break in %d seconds" +@@ -929,42 +929,42 @@ msgstr[0] "Přestávka za %d sekundu" + msgstr[1] "Přestávka za %d sekundy" + msgstr[2] "Přestávka za %d sekund" + +-#: js/misc/brightnessManager.js:169 js/ui/status/brightness.js:10 ++#: js/misc/brightnessManager.js:171 js/ui/status/brightness.js:10 + msgid "Brightness" + msgstr "Jas" + + #. Translators: The name of the power-off action in search +-#: js/misc/systemActions.js:93 ++#: js/misc/systemActions.js:94 + msgctxt "search-result" + msgid "Power Off" + msgstr "Vypnout" + + #. Translators: A list of keywords that match the power-off action, separated by semicolons +-#: js/misc/systemActions.js:96 ++#: js/misc/systemActions.js:97 + msgid "power off;poweroff;shutdown;halt;stop" + msgstr "vypnout;vypnutí;zastavit;shodit;stopnout;stop;" + + #. Translators: The name of the restart action in search +-#: js/misc/systemActions.js:101 ++#: js/misc/systemActions.js:102 + msgctxt "search-result" + msgid "Restart" + msgstr "Restartovat" + + #. Translators: A list of keywords that match the restart action, separated by semicolons +-#: js/misc/systemActions.js:104 ++#: js/misc/systemActions.js:105 + msgid "reboot;restart;" + msgstr "" + "restart;restartování;restartovat;reboot;znovu zavést systém;zavedení " + "systému;natažení systému;" + + #. Translators: The name of the lock screen action in search +-#: js/misc/systemActions.js:109 ++#: js/misc/systemActions.js:110 + msgctxt "search-result" + msgid "Lock Screen" + msgstr "Zamknout obrazovku" + + #. Translators: A list of keywords that match the lock screen action, separated by semicolons +-#: js/misc/systemActions.js:112 ++#: js/misc/systemActions.js:113 + msgid "lock screen" + msgstr "" + "zamknout obrazovku;zamknout počítač;uzamknout obrazovku;uzamknout " +@@ -974,40 +974,40 @@ msgstr "" + "počítače;" + + #. Translators: The name of the logout action in search +-#: js/misc/systemActions.js:117 ++#: js/misc/systemActions.js:118 + msgctxt "search-result" + msgid "Log Out" + msgstr "Odhlásit se" + + #. Translators: A list of keywords that match the logout action, separated by semicolons +-#: js/misc/systemActions.js:120 ++#: js/misc/systemActions.js:121 + msgid "logout;log out;sign off" + msgstr "odhlásit se;odhlášení;odlogovat se;odlogování;" + + #. Translators: The name of the suspend action in search +-#: js/misc/systemActions.js:125 ++#: js/misc/systemActions.js:126 + msgctxt "search-result" + msgid "Suspend" + msgstr "Uspat do paměti" + + #. Translators: A list of keywords that match the suspend action, separated by semicolons +-#: js/misc/systemActions.js:128 ++#: js/misc/systemActions.js:129 + msgid "suspend;sleep" + msgstr "uspat do paměti;režim spánku;" + + #. Translators: The name of the switch user action in search +-#: js/misc/systemActions.js:133 ++#: js/misc/systemActions.js:134 + msgctxt "search-result" + msgid "Switch User" + msgstr "Přepnout uživatele" + + #. Translators: A list of keywords that match the switch user action, separated by semicolons +-#: js/misc/systemActions.js:136 ++#: js/misc/systemActions.js:137 + msgid "switch user" + msgstr "přepnout uživatele;přepnutí uživatele;" + + #. Translators: A list of keywords that match the lock orientation action, separated by semicolons +-#: js/misc/systemActions.js:143 ++#: js/misc/systemActions.js:144 + msgid "lock orientation;unlock orientation;screen;rotation" + msgstr "" + "zamknout otočení;zamknout orientaci;uzamknout otočení;uzamknout " +@@ -1019,24 +1019,24 @@ msgstr "" + "orientace;obrazovka;otočení;orientace;" + + #. Translators: The name of the screenshot UI action in search +-#: js/misc/systemActions.js:148 ++#: js/misc/systemActions.js:149 + msgctxt "search-result" + msgid "Take a Screenshot" + msgstr "Pořídit snímek obrazovky" + + #. Translators: A list of keywords that match the screenshot UI action, separated by semicolons +-#: js/misc/systemActions.js:151 ++#: js/misc/systemActions.js:152 + msgid "screenshot;screencast;snip;capture;record" + msgstr "" + "snímek obrazovky;záznam obrazovky;nahrávání " + "obrazovky;zachytit;sejmout;nahrát;zaznamenat;" + +-#: js/misc/systemActions.js:255 ++#: js/misc/systemActions.js:256 + msgctxt "search-result" + msgid "Unlock Screen Rotation" + msgstr "Odemknout otočení obrazovky" + +-#: js/misc/systemActions.js:256 ++#: js/misc/systemActions.js:257 + msgctxt "search-result" + msgid "Lock Screen Rotation" + msgstr "Zamknout otočení obrazovky" +@@ -1228,7 +1228,7 @@ msgstr "Zamítnout" + msgid "Allow" + msgstr "Povolit" + +-#: js/ui/appDisplay.js:1762 ++#: js/ui/appDisplay.js:1734 + msgid "Unnamed Folder" + msgstr "Nepojmenovaná složka" + +@@ -1242,7 +1242,7 @@ msgstr "Aplikace %s byla přidána mezi oblíbené." + msgid "%s has been unpinned from the dash." + msgstr "Aplikace %s byla odebrána z oblíbených." + +-#: js/ui/appFavorites.js:134 js/ui/main.js:315 ++#: js/ui/appFavorites.js:134 js/ui/main.js:316 + msgid "Undo" + msgstr "Zpět" + +@@ -1404,15 +1404,15 @@ msgstr "%-e" + msgid "Week %V" + msgstr "%V. týden" + +-#: js/ui/calendar.js:773 ++#: js/ui/calendar.js:774 + msgid "No Notifications" + msgstr "Nejsou žádná upozornění" + +-#: js/ui/calendar.js:812 ++#: js/ui/calendar.js:815 + msgid "Clear" + msgstr "Vymazat" + +-#: js/ui/calendar.js:816 ++#: js/ui/calendar.js:819 + msgctxt "action" + msgid "Clear all notifications" + msgstr "Vymazat všechna upozornění" +@@ -1449,7 +1449,7 @@ msgstr "Externí svazek odpojen" + + #: js/ui/components/automountManager.js:208 + msgid "Unable to unlock volume" +-msgstr "Nelze uzamknout svazek" ++msgstr "Nelze odemknout svazek" + + #: js/ui/components/automountManager.js:209 + msgid "The installed udisks version does not support the PIM setting" +@@ -1498,18 +1498,18 @@ msgid "Service" + msgstr "Služba" + + #: js/ui/components/networkAgent.js:371 js/ui/components/networkAgent.js:407 +-#: js/ui/components/networkAgent.js:745 js/ui/components/networkAgent.js:766 ++#: js/ui/components/networkAgent.js:744 js/ui/components/networkAgent.js:765 + msgid "Authentication required" + msgstr "Vyžaduje ověření" + +-#: js/ui/components/networkAgent.js:372 js/ui/components/networkAgent.js:746 ++#: js/ui/components/networkAgent.js:372 js/ui/components/networkAgent.js:745 + #, javascript-format + msgid "" + "Passwords or encryption keys are required to access the wireless network “%s”" + msgstr "" + "Pro přístup k bezdrátové síti „%s“ jsou vyžadována hesla nebo šifrovací klíče" + +-#: js/ui/components/networkAgent.js:376 js/ui/components/networkAgent.js:750 ++#: js/ui/components/networkAgent.js:376 js/ui/components/networkAgent.js:749 + msgid "Wired 802.1X authentication" + msgstr "Ověření připojení po drátu 802.1X" + +@@ -1517,15 +1517,15 @@ msgstr "Ověření připojení po drátu 802.1X" + msgid "Network name" + msgstr "Název sítě" + +-#: js/ui/components/networkAgent.js:387 js/ui/components/networkAgent.js:754 ++#: js/ui/components/networkAgent.js:387 js/ui/components/networkAgent.js:753 + msgid "DSL authentication" + msgstr "Ověření DSL" + +-#: js/ui/components/networkAgent.js:394 js/ui/components/networkAgent.js:759 ++#: js/ui/components/networkAgent.js:394 js/ui/components/networkAgent.js:758 + msgid "PIN code required" + msgstr "Požadován kód PIN" + +-#: js/ui/components/networkAgent.js:395 js/ui/components/networkAgent.js:760 ++#: js/ui/components/networkAgent.js:395 js/ui/components/networkAgent.js:759 + msgid "PIN code is needed for the mobile broadband device" + msgstr "Pro mobilní širokopásmové zařízení je vyžadován kód PIN" + +@@ -1533,14 +1533,14 @@ msgstr "Pro mobilní širokopásmové zařízení je vyžadován kód PIN" + msgid "PIN" + msgstr "PIN" + +-#: js/ui/components/networkAgent.js:408 js/ui/components/networkAgent.js:751 +-#: js/ui/components/networkAgent.js:755 js/ui/components/networkAgent.js:767 +-#: js/ui/components/networkAgent.js:771 ++#: js/ui/components/networkAgent.js:408 js/ui/components/networkAgent.js:750 ++#: js/ui/components/networkAgent.js:754 js/ui/components/networkAgent.js:766 ++#: js/ui/components/networkAgent.js:770 + #, javascript-format + msgid "A password is required to connect to “%s”" + msgstr "Pro připojení k „%s“ je vyžadováno heslo" + +-#: js/ui/components/networkAgent.js:770 ++#: js/ui/components/networkAgent.js:769 + msgid "VPN password" + msgstr "Heslo k VPN" + +@@ -1564,7 +1564,7 @@ msgstr "Ověřit" + msgid "Sorry, that didn’t work. Please try again." + msgstr "Ověření bohužel nebylo úspěšné. Zkuste to prosím znovu." + +-#: js/ui/ctrlAltTab.js:23 js/ui/overviewControls.js:404 ++#: js/ui/ctrlAltTab.js:23 js/ui/overviewControls.js:407 + msgid "Windows" + msgstr "Okna" + +@@ -1698,7 +1698,7 @@ msgctxt "button" + msgid "Log Out" + msgstr "Odhlásit" + +-#: js/ui/endSessionDialog.js:70 js/ui/status/system.js:174 ++#: js/ui/endSessionDialog.js:70 js/ui/status/system.js:181 + msgctxt "title" + msgid "Power Off" + msgstr "Vypnutí" +@@ -1932,7 +1932,7 @@ msgstr "Vypnout" + msgid "Leave Off" + msgstr "Ponechat vypnuté" + +-#: js/ui/keyboard.js:180 js/ui/status/keyboard.js:901 ++#: js/ui/keyboard.js:179 js/ui/status/keyboard.js:898 + msgid "Keyboard Settings" + msgstr "Nastavení klávesnice" + +@@ -1990,19 +1990,19 @@ msgstr "Zobrazit zdroj" + msgid "Web Page" + msgstr "Webová stránka" + +-#: js/ui/main.js:311 ++#: js/ui/main.js:312 + msgid "System was put in unsafe mode" + msgstr "Systém byl přepnut do nebezpečného režimu" + +-#: js/ui/main.js:312 ++#: js/ui/main.js:313 + msgid "Apps now have unrestricted access" + msgstr "Aplikace mají nyní neomezený přístup" + +-#: js/ui/main.js:372 ++#: js/ui/main.js:373 + msgid "Logged in as a privileged user" + msgstr "Přihlášeni jako privilegovaný uživatel" + +-#: js/ui/main.js:373 ++#: js/ui/main.js:374 + msgid "" + "Running a session as a privileged user should be avoided for security " + "reasons. If possible, you should log in as a normal user." +@@ -2011,11 +2011,11 @@ msgstr "" + "bezpečnostních důvodů vyhýbat. Pokud je to možné, přihlaste se jako běžný " + "uživatel." + +-#: js/ui/main.js:421 ++#: js/ui/main.js:422 + msgid "Screen Lock disabled" + msgstr "Zamykání obrazovky je vypnuto" + +-#: js/ui/main.js:422 ++#: js/ui/main.js:423 + msgid "Screen Locking requires the GNOME display manager" + msgstr "Zamykání obrazovky vyžaduje správce displeje GNOME" + +@@ -2041,11 +2041,11 @@ msgstr "Neznámý název" + #. in the search entry when no search is + #. active; it should not exceed ~30 + #. characters. +-#: js/ui/overviewControls.js:328 ++#: js/ui/overviewControls.js:330 + msgid "Type to search" + msgstr "vyhledávejte psaním" + +-#: js/ui/overviewControls.js:392 ++#: js/ui/overviewControls.js:395 + msgid "Apps" + msgstr "Aplikace" + +@@ -2134,15 +2134,15 @@ msgstr "Restart není na Waylandu k dispozici" + msgid "Restarting…" + msgstr "Restartuje se…" + +-#: js/ui/screenShield.js:233 ++#: js/ui/screenShield.js:227 + msgid "GNOME needs to lock the screen" + msgstr "GNOME potřebuje uzamknout obrazovku" + +-#: js/ui/screenShield.js:274 js/ui/screenShield.js:682 ++#: js/ui/screenShield.js:269 js/ui/screenShield.js:680 + msgid "Unable to lock" + msgstr "Nelze uzamknout obrazovku" + +-#: js/ui/screenShield.js:275 js/ui/screenShield.js:683 ++#: js/ui/screenShield.js:270 js/ui/screenShield.js:681 + msgid "Lock was blocked by an app" + msgstr "Zamknutí je blokováno některou z aplikací" + +@@ -2175,7 +2175,7 @@ msgstr "Okno" + msgid "Window Selection" + msgstr "Výběr okna" + +-#: js/ui/screenshot.js:1333 js/ui/status/system.js:111 ++#: js/ui/screenshot.js:1333 js/ui/status/system.js:118 + msgid "Take Screenshot" + msgstr "Pořídit snímek obrazovky" + +@@ -2266,15 +2266,15 @@ msgstr "Obrázek můžete vložit ze schránky" + msgid "Screenshot taken" + msgstr "Byl pořízen snímek obrazovky" + +-#: js/ui/search.js:842 ++#: js/ui/search.js:847 + msgid "Searching" + msgstr "Hledá se" + +-#: js/ui/search.js:845 ++#: js/ui/search.js:850 + msgid "No results" + msgstr "Žádné výsledky" + +-#: js/ui/search.js:977 ++#: js/ui/search.js:985 + #, javascript-format + msgid "%d more" + msgid_plural "%d more" +@@ -2287,23 +2287,23 @@ msgstr[2] "%d dalších" + msgid "Search" + msgstr "Hledat" + +-#: js/ui/shellEntry.js:21 ++#: js/ui/shellEntry.js:22 + msgid "Copy" + msgstr "Kopírovat" + +-#: js/ui/shellEntry.js:26 ++#: js/ui/shellEntry.js:27 + msgid "Paste" + msgstr "Vložit" + +-#: js/ui/shellEntry.js:78 ++#: js/ui/shellEntry.js:79 + msgid "Show Text" + msgstr "Zobrazit text" + +-#: js/ui/shellEntry.js:80 ++#: js/ui/shellEntry.js:81 + msgid "Hide Text" + msgstr "Skrýt text" + +-#: js/ui/shellEntry.js:174 ++#: js/ui/shellEntry.js:175 + msgid "Caps lock is on" + msgstr "Je zapnutý Caps Lock" + +@@ -2447,7 +2447,7 @@ msgstr "Nízké" + msgid "High" + msgstr "Vysoké" + +-#: js/ui/status/backlight.js:162 js/ui/status/keyboard.js:883 ++#: js/ui/status/backlight.js:162 js/ui/status/keyboard.js:880 + msgid "Keyboard" + msgstr "Klávesnice" + +@@ -2479,7 +2479,7 @@ msgstr "Bluetooth" + msgid "Open Bluetooth menu" + msgstr "Otevřít nabídku Bluetooth" + +-#: js/ui/status/bluetooth.js:304 js/ui/status/network.js:1924 ++#: js/ui/status/bluetooth.js:304 js/ui/status/network.js:1925 + msgid "Bluetooth Settings" + msgstr "Nastavení Bluetooth" + +@@ -2512,27 +2512,27 @@ msgstr "Tmavý styl" + msgid "Do Not Disturb" + msgstr "Nevyrušovat" + +-#: js/ui/status/dwellClick.js:15 ++#: js/ui/status/dwellClick.js:14 + msgid "Single Click" + msgstr "Jednoduché kliknutí" + +-#: js/ui/status/dwellClick.js:20 ++#: js/ui/status/dwellClick.js:19 + msgid "Double Click" + msgstr "Dvojité kliknutí" + +-#: js/ui/status/dwellClick.js:25 ++#: js/ui/status/dwellClick.js:24 + msgid "Drag" + msgstr "Tažení" + +-#: js/ui/status/dwellClick.js:30 ++#: js/ui/status/dwellClick.js:29 + msgid "Secondary Click" + msgstr "Druhé kliknutí" + +-#: js/ui/status/dwellClick.js:39 ++#: js/ui/status/dwellClick.js:38 + msgid "Dwell Click" + msgstr "Kliknutí posečkáním" + +-#: js/ui/status/keyboard.js:900 ++#: js/ui/status/keyboard.js:897 + msgid "Show Keyboard Layout" + msgstr "Zobrazit rozložení klávesnice" + +@@ -2584,12 +2584,12 @@ msgid "%s, %s, %s" + msgstr "%s, %s, %s" + + #. Translators: %s is a network identifier +-#: js/ui/status/network.js:1165 ++#: js/ui/status/network.js:1166 + #, javascript-format + msgid "%s Hotspot" + msgstr "Přístupový bod %s" + +-#: js/ui/status/network.js:1446 ++#: js/ui/status/network.js:1447 + #, javascript-format + msgid "%d connected" + msgid_plural "%d connected" +@@ -2597,81 +2597,81 @@ msgstr[0] "%d připojený" + msgstr[1] "%d připojení" + msgstr[2] "%d připojených" + +-#: js/ui/status/network.js:1544 js/ui/status/network.js:1561 ++#: js/ui/status/network.js:1545 js/ui/status/network.js:1562 + msgid "VPN" + msgstr "VPN" + +-#: js/ui/status/network.js:1545 ++#: js/ui/status/network.js:1546 + msgid "Open VPN menu" + msgstr "Otevřít nabídku VPN" + +-#: js/ui/status/network.js:1546 ++#: js/ui/status/network.js:1547 + msgid "VPN Settings" + msgstr "Nastavení VPN" + +-#: js/ui/status/network.js:1806 ++#: js/ui/status/network.js:1807 + msgid "Wi–Fi" + msgstr "Wi-Fi" + +-#: js/ui/status/network.js:1807 ++#: js/ui/status/network.js:1808 + msgid "Open Wi–Fi menu" + msgstr "Otevřít nabídku Wi–Fi" + +-#: js/ui/status/network.js:1809 ++#: js/ui/status/network.js:1810 + msgid "All Networks" + msgstr "Všechny sítě" + +-#: js/ui/status/network.js:1906 ++#: js/ui/status/network.js:1907 + msgid "Wired Connections" + msgstr "Drátová připojení" + +-#: js/ui/status/network.js:1907 ++#: js/ui/status/network.js:1908 + msgid "Open wired connections menu" + msgstr "Otevřít nabídku drátových připojení" + +-#: js/ui/status/network.js:1908 ++#: js/ui/status/network.js:1909 + msgid "Wired Settings" + msgstr "Nastavení drátových připojení" + +-#: js/ui/status/network.js:1922 ++#: js/ui/status/network.js:1923 + msgid "Bluetooth Tethers" + msgstr "Sdílená připojení přes Bluetooth" + +-#: js/ui/status/network.js:1923 ++#: js/ui/status/network.js:1924 + msgid "Open Bluetooth tethers menu" + msgstr "Otevřít nabídku sdílených připojení přes Bluetooth" + + #. Translators: "Tether" from "Bluetooth Tether" +-#: js/ui/status/network.js:1930 ++#: js/ui/status/network.js:1931 + msgid "Tether" + msgstr "Sdílení připojení" + +-#: js/ui/status/network.js:1943 ++#: js/ui/status/network.js:1944 + msgid "Mobile Connections" + msgstr "Mobilní připojení" + +-#: js/ui/status/network.js:1944 ++#: js/ui/status/network.js:1945 + msgid "Open mobile connections menu" + msgstr "Otevřít nabídku mobilních připojení" + +-#: js/ui/status/network.js:1946 ++#: js/ui/status/network.js:1947 + msgid "Mobile Broadband Settings" + msgstr "Nastavení mobilního připojení" + + #. Translators: "Mobile" from "Mobile Broadband" +-#: js/ui/status/network.js:1955 ++#: js/ui/status/network.js:1956 + msgid "Mobile" + msgstr "Mobilní" + +-#: js/ui/status/network.js:1989 ++#: js/ui/status/network.js:1990 + msgid "Sign in to Network" + msgstr "Přihlásit se k síti" + +-#: js/ui/status/network.js:2176 ++#: js/ui/status/network.js:2177 + msgid "Connection failed" + msgstr "Připojení selhalo" + +-#: js/ui/status/network.js:2177 ++#: js/ui/status/network.js:2178 + msgid "Activation of network connection failed" + msgstr "Aktivace síťového připojení selhala" + +@@ -2723,31 +2723,31 @@ msgstr "Zastavit sdílení obrazovky" + msgid "Airplane Mode" + msgstr "Režim „letadlo“" + +-#: js/ui/status/system.js:168 ++#: js/ui/status/system.js:175 + msgid "Power Off Menu" + msgstr "Nabídka vypnutí" + +-#: js/ui/status/system.js:176 ++#: js/ui/status/system.js:183 + msgid "Suspend" + msgstr "Uspat do paměti" + +-#: js/ui/status/system.js:181 ++#: js/ui/status/system.js:188 + msgid "Restart…" + msgstr "Restartovat…" + +-#: js/ui/status/system.js:186 ++#: js/ui/status/system.js:193 + msgid "Power Off…" + msgstr "Vypnout…" + +-#: js/ui/status/system.js:193 ++#: js/ui/status/system.js:200 + msgid "Log Out…" + msgstr "Odhlásit se…" + +-#: js/ui/status/system.js:198 ++#: js/ui/status/system.js:205 + msgid "Switch User…" + msgstr "Přepnout uživatele…" + +-#: js/ui/status/system.js:242 ++#: js/ui/status/system.js:249 + msgctxt "action" + msgid "Lock Screen" + msgstr "Uzamknout obrazovku" +@@ -2845,23 +2845,23 @@ msgstr "Jen vestavěné" + # Not sure whether we've enough space for it, but anyway, looks more aesthetically with "%A". + #. Translators: This is a time format for a date in + #. long format +-#: js/ui/unlockDialog.js:413 ++#: js/ui/unlockDialog.js:414 + msgid "%A %B %-d" + msgstr "%A, %-e. %B" + +-#: js/ui/unlockDialog.js:419 ++#: js/ui/unlockDialog.js:420 + msgid "Swipe up to unlock" + msgstr "Pro odemčení přejeďte prstem nahoru" + +-#: js/ui/unlockDialog.js:420 ++#: js/ui/unlockDialog.js:421 + msgid "Click or press a key to unlock" + msgstr "Pro odemčení klikněte nebo stiskněte klávesu" + +-#: js/ui/unlockDialog.js:605 ++#: js/ui/unlockDialog.js:609 + msgid "Unlock Window" + msgstr "Odemykací okno" + +-#: js/ui/unlockDialog.js:614 ++#: js/ui/unlockDialog.js:618 + msgid "Log in as another user" + msgstr "Přihlásit se jako jiný uživatel" + +@@ -2889,19 +2889,19 @@ msgid "“%s” is ready" + msgstr "Připraveno „%s“" + + #. Translators: This string should be shorter than 30 characters +-#: js/ui/windowManager.js:61 ++#: js/ui/windowManager.js:60 + msgid "Keep these display settings?" + msgstr "Zachovat toto nastavení displeje?" + +-#: js/ui/windowManager.js:71 ++#: js/ui/windowManager.js:70 + msgid "Revert Settings" + msgstr "Obnovit původní" + +-#: js/ui/windowManager.js:76 ++#: js/ui/windowManager.js:75 + msgid "Keep Changes" + msgstr "Zachovat" + +-#: js/ui/windowManager.js:96 ++#: js/ui/windowManager.js:95 + #, javascript-format + msgid "Settings changes will revert in %d second" + msgid_plural "Settings changes will revert in %d seconds" +@@ -2911,78 +2911,78 @@ msgstr[2] "Nastavení se obnoví na původní za %d sekund" + + #. Translators: This represents the size of a window. The first number is + #. * the width of the window and the second is the height. +-#: js/ui/windowManager.js:493 ++#: js/ui/windowManager.js:492 + #, javascript-format + msgid "%d × %d" + msgstr "%d × %d" + + #. Translators: entry in the window right click menu. +-#: js/ui/windowMenu.js:28 ++#: js/ui/windowMenu.js:27 + msgctxt "window-menu" + msgid "Take Screenshot" + msgstr "Pořídit snímek obrazovky" + +-#: js/ui/windowMenu.js:40 ++#: js/ui/windowMenu.js:39 + msgid "Hide" + msgstr "Skrýt" + +-#: js/ui/windowMenu.js:47 ++#: js/ui/windowMenu.js:46 + msgid "Restore" + msgstr "Obnovit" + +-#: js/ui/windowMenu.js:51 ++#: js/ui/windowMenu.js:50 + msgid "Maximize" + msgstr "Maximalizovat" + +-#: js/ui/windowMenu.js:58 ++#: js/ui/windowMenu.js:57 + msgid "Move" + msgstr "Přesunout" + +-#: js/ui/windowMenu.js:78 ++#: js/ui/windowMenu.js:71 + msgid "Resize" + msgstr "Změnit velikost" + +-#: js/ui/windowMenu.js:98 ++#: js/ui/windowMenu.js:85 + msgid "Always on Top" + msgstr "Vždy nahoře" + +-#: js/ui/windowMenu.js:117 ++#: js/ui/windowMenu.js:104 + msgid "Always on Visible Workspace" + msgstr "Vždy na viditelné ploše" + +-#: js/ui/windowMenu.js:131 ++#: js/ui/windowMenu.js:118 + msgid "Move to Workspace Left" + msgstr "Přesunout o plochu doleva" + +-#: js/ui/windowMenu.js:137 ++#: js/ui/windowMenu.js:124 + msgid "Move to Workspace Right" + msgstr "Přesunout o plochu doprava" + +-#: js/ui/windowMenu.js:143 ++#: js/ui/windowMenu.js:130 + msgid "Move to Workspace Up" + msgstr "Přesunout o plochu výš" + +-#: js/ui/windowMenu.js:149 ++#: js/ui/windowMenu.js:136 + msgid "Move to Workspace Down" + msgstr "Přesunout o plochu níž" + +-#: js/ui/windowMenu.js:167 ++#: js/ui/windowMenu.js:154 + msgid "Move to Monitor Up" + msgstr "Přesunout o monitor výš" + +-#: js/ui/windowMenu.js:176 ++#: js/ui/windowMenu.js:163 + msgid "Move to Monitor Down" + msgstr "Přesunout o monitor níž" + +-#: js/ui/windowMenu.js:185 ++#: js/ui/windowMenu.js:172 + msgid "Move to Monitor Left" + msgstr "Přesunout o monitor doleva" + +-#: js/ui/windowMenu.js:194 ++#: js/ui/windowMenu.js:181 + msgid "Move to Monitor Right" + msgstr "Přesunout o monitor doprava" + +-#: js/ui/windowMenu.js:202 ++#: js/ui/windowMenu.js:189 + msgid "Close" + msgstr "Zavřít" + +@@ -3054,15 +3054,15 @@ msgstr "" + "Aplikace Rozšíření GNOME umožňuje aktualizaci a nastavení předvoleb " + "rozšíření a odstranění nebo vypnutí nechtěných rozšíření." + +-#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:78 ++#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:72 + msgid "Main Window" + msgstr "Hlavní okno" + +-#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:82 ++#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:76 + msgid "Available Updates" + msgstr "Dostupné aktualizace" + +-#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:86 ++#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:80 + msgid "Search View" + msgstr "Zobrazení vyhledávání" + +@@ -3310,6 +3310,7 @@ msgid "Description" + msgstr "Popis" + + #: subprojects/extensions-tool/src/command-create.c:416 ++#, c-format + msgid "" + "UUID is a globally-unique identifier for your extension.\n" + "This should be in the format of an email address " +@@ -3319,6 +3320,7 @@ msgstr "" + "Měl by být ve formátu e-mailové adresy (clicktofocus@janedoe.example.com)\n" + + #: subprojects/extensions-tool/src/command-create.c:443 ++#, c-format + msgid "Choose one of the available templates:\n" + msgstr "Zvolte jednu z dostupných šablon:\n" + +@@ -3428,6 +3430,7 @@ msgstr "Povolit rozšíření" + #: subprojects/extensions-tool/src/command-info.c:50 + #: subprojects/extensions-tool/src/command-list.c:66 + #: subprojects/extensions-tool/src/main.c:150 ++#, c-format + msgid "Failed to connect to GNOME Shell\n" + msgstr "Selhalo připojení ke GNOME Shellu\n" + +@@ -3566,6 +3569,7 @@ msgid "Reset an extension" + msgstr "Uvést rozšíření od výchozího stavu" + + #: subprojects/extensions-tool/src/command-uninstall.c:49 ++#, c-format + msgid "Cannot uninstall system extensions\n" + msgstr "Systémové rozšíření odinstalovat nelze\n" + +@@ -3579,10 +3583,12 @@ msgid "Uninstall an extension" + msgstr "Odinstalovat rozšíření" + + #: subprojects/extensions-tool/src/command-upload.c:226 ++#, c-format + msgid "Login to extensions.gnome.org\n" + msgstr "Přihlásit se k extensions.gnome.org\n" + + #: subprojects/extensions-tool/src/command-upload.c:256 ++#, c-format + msgid "Warning! Password will be echoed" + msgstr "Varování! Heslo bude zobrazeno" + diff --git a/debian/patches/Update-Greek-translation-1.patch b/debian/patches/Update-Greek-translation-1.patch new file mode 100644 index 000000000..a6f45f7bc --- /dev/null +++ b/debian/patches/Update-Greek-translation-1.patch @@ -0,0 +1,22 @@ +From: Efstathios Iosifidis +Date: Fri, 6 Feb 2026 21:45:43 +0000 +Subject: Update Greek translation + +Origin: upstream, 49.4, commit:cdd6b186c392cb6b6780e1df7ae9d7f106917a71 +--- + po/el.po | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/po/el.po b/po/el.po +index 00fb9ed..7469684 100644 +--- a/po/el.po ++++ b/po/el.po +@@ -2807,7 +2807,7 @@ msgstr "Μόνο ενσωματωμένο" + #. long format + #: js/ui/unlockDialog.js:414 + msgid "%A %B %-d" +-msgstr "%A %B %-d" ++msgstr "%A %-d %B" + + #: js/ui/unlockDialog.js:420 + msgid "Swipe up to unlock" diff --git a/debian/patches/Update-Greek-translation.patch b/debian/patches/Update-Greek-translation.patch new file mode 100644 index 000000000..0dbcdc278 --- /dev/null +++ b/debian/patches/Update-Greek-translation.patch @@ -0,0 +1,981 @@ +From: Efstathios Iosifidis +Date: Fri, 6 Feb 2026 21:25:19 +0000 +Subject: Update Greek translation + +Origin: upstream, 49.4, commit:862546387c31a813d654f7fa6b0813d223099010 +--- + po/el.po | 288 +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 144 insertions(+), 144 deletions(-) + +diff --git a/po/el.po b/po/el.po +index 6061341..00fb9ed 100644 +--- a/po/el.po ++++ b/po/el.po +@@ -7,7 +7,7 @@ msgid "" + msgstr "" + "Project-Id-Version: gnome-shell.po.master\n" + "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues/\n" +-"POT-Creation-Date: 2025-10-17 22:26+0000\n" ++"POT-Creation-Date: 2026-02-05 16:09+0000\n" + "PO-Revision-Date: 2025-10-18 22:44+0300\n" + "Last-Translator: Efstathios Iosifidis \n" + "Language-Team: Greek, Modern (1453-) \n" +@@ -98,7 +98,7 @@ msgid "Open new window of pinned app 9" + msgstr "Άνοιγμα νέου παραθύρου της καρφιτσωμένης εφαρμογής 9" + + #. Translators: name of the folder under ~/Pictures for screenshots. +-#: data/50-gnome-shell-screenshots.xml:6 js/ui/screenshot.js:2295 ++#: data/50-gnome-shell-screenshots.xml:6 js/ui/screenshot.js:2292 + msgid "Screenshots" + msgstr "Στιγμιότυπα οθόνης" + +@@ -123,7 +123,7 @@ msgid "Record a screencast interactively" + msgstr "Καταγραφή βίντεο οθόνης διαδραστικά" + + #: data/50-gnome-shell-system.xml:6 +-#: data/X-GNOME-Shell-System.directory.desktop.in:2 js/ui/messageTray.js:1313 ++#: data/X-GNOME-Shell-System.directory.desktop.in:2 js/ui/messageTray.js:1314 + msgid "System" + msgstr "Σύστημα" + +@@ -613,7 +613,7 @@ msgstr "Λεπτομέρειες σφάλματος" + msgid "Copy Error" + msgstr "Αντιγραφή σφάλματος" + +-#: js/gdm/authPrompt.js:157 js/gdm/loginDialog.js:511 ++#: js/gdm/authPrompt.js:157 js/gdm/loginDialog.js:514 + #: js/ui/audioDeviceSelection.js:60 js/ui/components/networkAgent.js:114 + #: js/ui/components/polkitAgent.js:144 js/ui/endSessionDialog.js:437 + #: js/ui/extensionDownloader.js:276 js/ui/shellMountOperation.js:382 +@@ -634,12 +634,12 @@ msgstr "Συνθηματικό" + msgid "Choose Session" + msgstr "Επιλογή συνεδρίας" + +-#: js/gdm/loginDialog.js:417 js/ui/status/accessibility.js:35 ++#: js/gdm/loginDialog.js:420 js/ui/status/accessibility.js:35 + msgid "Accessibility" + msgstr "Προσιτότητα" + + #. Translators: is running for +-#: js/gdm/loginDialog.js:469 ++#: js/gdm/loginDialog.js:472 + #, javascript-format + msgid "" + "Remote login is not possible because a remote session is already running for " +@@ -651,7 +651,7 @@ msgstr "" + "αποσυνδεθείτε από την απομακρυσμένη συνεδρία ή να τη διακόψετε εξαναγκαστικά." + + #. Translators: is running for +-#: js/gdm/loginDialog.js:472 ++#: js/gdm/loginDialog.js:475 + #, javascript-format + msgid "" + "Login is not possible because a remote session is already running for %s. To " +@@ -662,7 +662,7 @@ msgstr "" + "συνεδρία ή να τη διακόψετε εξαναγκαστικά." + + #. Translators: is running for +-#: js/gdm/loginDialog.js:475 ++#: js/gdm/loginDialog.js:478 + #, javascript-format + msgid "" + "Remote login is not possible because a local session is already running for " +@@ -674,7 +674,7 @@ msgstr "" + "αποσυνδεθείτε από την τοπική συνεδρία ή να τη διακόψετε εξαναγκαστικά." + + #. Translators: is running for +-#: js/gdm/loginDialog.js:478 ++#: js/gdm/loginDialog.js:481 + #, javascript-format + msgid "" + "Login is not possible because a session is already running for %s. To login, " +@@ -684,11 +684,11 @@ msgstr "" + "συνδεθείτε, πρέπει να αποσυνδεθείτε από τη συνεδρία ή να τη διακόψετε " + "εξαναγκαστικά." + +-#: js/gdm/loginDialog.js:487 ++#: js/gdm/loginDialog.js:490 + msgid "Session Already Running" + msgstr "Συνεδρία εκτελείται ήδη" + +-#: js/gdm/loginDialog.js:499 ++#: js/gdm/loginDialog.js:502 + msgid "" + "Force stopping will quit any running apps and processes, and could result in " + "data loss" +@@ -696,36 +696,36 @@ msgstr "" + "Η εξαναγκαστική διακοπή θα τερματίσει όλες τις εφαρμογές και διεργασίες που " + "εκτελούνται και θα μπορούσε να οδηγήσει σε απώλεια δεδομένων" + +-#: js/gdm/loginDialog.js:519 ++#: js/gdm/loginDialog.js:522 + msgid "Force Stop" + msgstr "Εξαναγκαστική διακοπή" + +-#: js/gdm/loginDialog.js:597 ++#: js/gdm/loginDialog.js:600 + msgid "Not listed?" + msgstr "Δεν είστε στη λίστα;" + + #. Translators: this message is shown below the username entry field + #. to clue the user in on how to login to the local network realm +-#: js/gdm/loginDialog.js:1126 ++#: js/gdm/loginDialog.js:1136 + #, javascript-format + msgid "(e.g., user or %s)" + msgstr "(π.χ., χρήστης ή %s)" + +-#: js/gdm/loginDialog.js:1131 js/ui/components/networkAgent.js:258 ++#: js/gdm/loginDialog.js:1141 js/ui/components/networkAgent.js:258 + #: js/ui/components/networkAgent.js:293 js/ui/components/networkAgent.js:327 + #: subprojects/extensions-tool/src/command-upload.c:234 + msgid "Username" + msgstr "Όνομα χρήστη" + +-#: js/gdm/loginDialog.js:1197 ++#: js/gdm/loginDialog.js:1207 + msgid "Login Attempt Timed Out" + msgstr "Λήξη χρονικού ορίου προσπάθειας σύνδεσης" + +-#: js/gdm/loginDialog.js:1198 ++#: js/gdm/loginDialog.js:1208 + msgid "Login took too long, please try again" + msgstr "Η σύνδεση διήρκησε πολύ, παρακαλώ δοκιμάστε ξανά" + +-#: js/gdm/loginDialog.js:1547 ++#: js/gdm/loginDialog.js:1557 + msgid "Login Window" + msgstr "Παράθυρο σύνδεσης" + +@@ -735,42 +735,42 @@ msgstr "Σφάλμα πιστοποίησης" + + #. Translators: this message is shown below the password entry field + #. to indicate the user can swipe their finger on the fingerprint reader +-#: js/gdm/util.js:729 ++#: js/gdm/util.js:733 + msgid "(or swipe finger across reader)" + msgstr "(ή σύρετε το δάκτυλο στον αναγνώστη)" + + #. Translators: this message is shown below the password entry field + #. to indicate the user can place their finger on the fingerprint reader instead +-#: js/gdm/util.js:734 ++#: js/gdm/util.js:738 + msgid "(or place finger on reader)" + msgstr "(ή τοποθετήστε το δάκτυλο στον αναγνώστη)" + +-#: js/misc/breakManager.js:770 ++#: js/misc/breakManager.js:774 + msgid "Break complete sound" + msgstr "Ήχος ολοκλήρωσης διαλείμματος" + +-#: js/misc/breakManager.js:980 ++#: js/misc/breakManager.js:984 + #, javascript-format + msgid "%d second" + msgid_plural "%d seconds" + msgstr[0] "%d δευτερόλεπτο" + msgstr[1] "%d δευτερόλεπτα" + +-#: js/misc/breakManager.js:986 ++#: js/misc/breakManager.js:990 + #, javascript-format + msgid "%d minute" + msgid_plural "%d minutes" + msgstr[0] "%d λεπτό" + msgstr[1] "%d λεπτά" + +-#: js/misc/breakManager.js:992 ++#: js/misc/breakManager.js:996 + #, javascript-format + msgid "%d hour" + msgid_plural "%d hours" + msgstr[0] "%d ώρα" + msgstr[1] "%d ώρες" + +-#: js/misc/breakManager.js:998 ++#: js/misc/breakManager.js:1002 + #, javascript-format + msgid "%d day" + msgid_plural "%d days" +@@ -778,79 +778,79 @@ msgstr[0] "%d ημέρα" + msgstr[1] "%d ημέρες" + + #. %s will be replaced with a string that describes a time interval, such as “2 minutes”, “40 seconds” or “1 hour” +-#: js/misc/breakManager.js:1081 ++#: js/misc/breakManager.js:1085 + #, javascript-format + msgid "It will be time for a break in %s" + msgid_plural "It will be time for a break in %s" + msgstr[0] "Θα είναι ώρα για διάλειμμα σε %s" + msgstr[1] "Θα είναι ώρα για διάλειμμα σε %s" + +-#: js/misc/breakManager.js:1089 ++#: js/misc/breakManager.js:1093 + msgid "Movement Break Soon" + msgstr "Διάλειμμα Κίνησης Σύντομα" + +-#: js/misc/breakManager.js:1092 ++#: js/misc/breakManager.js:1096 + msgid "Eyesight Break Soon" + msgstr "Διάλειμμα Όρασης Σύντομα" + +-#: js/misc/breakManager.js:1095 ++#: js/misc/breakManager.js:1099 + msgid "Break Soon" + msgstr "Διάλειμμα Σύντομα" + +-#: js/misc/breakManager.js:1140 ++#: js/misc/breakManager.js:1144 + msgid "Movement Break in Progress" + msgstr "Διάλειμμα Κίνησης σε Εξέλιξη" + + #. %s will be replaced with a string that describes a time interval, such as “2 minutes”, “40 seconds” or “1 hour” +-#: js/misc/breakManager.js:1143 ++#: js/misc/breakManager.js:1147 + #, javascript-format + msgid "Continue moving around for %s" + msgid_plural "Continue moving around for %s" + msgstr[0] "Συνεχίστε να κινείστε για %s" + msgstr[1] "Συνεχίστε να κινείστε για %s" + +-#: js/misc/breakManager.js:1149 ++#: js/misc/breakManager.js:1153 + msgid "Eyesight Break in Progress" + msgstr "Διάλειμμα Όρασης σε Εξέλιξη" + + #. %s will be replaced with a string that describes a time interval, such as “2 minutes”, “40 seconds” or “1 hour” +-#: js/misc/breakManager.js:1152 ++#: js/misc/breakManager.js:1156 + #, javascript-format + msgid "Continue looking away for %s" + msgid_plural "Continue looking away for %s" + msgstr[0] "Συνεχίστε να κοιτάτε μακριά για %s" + msgstr[1] "Συνεχίστε να κοιτάτε μακριά για %s" + +-#: js/misc/breakManager.js:1158 ++#: js/misc/breakManager.js:1162 + msgid "Break in Progress" + msgstr "Διάλειμμα σε Εξέλιξη" + + #. %s will be replaced with a string that describes a time interval, such as “2 minutes”, “40 seconds” or “1 hour” +-#: js/misc/breakManager.js:1161 ++#: js/misc/breakManager.js:1165 + #, javascript-format + msgid "%s left in your break" + msgid_plural "%s left in your break" + msgstr[0] "%s απομένει στο διάλειμμά σας" + msgstr[1] "%s απομένουν στο διάλειμμά σας" + +-#: js/misc/breakManager.js:1200 ++#: js/misc/breakManager.js:1204 + msgid "Time for a Movement Break" + msgstr "Ώρα για Διάλειμμα Κίνησης" + + #. %s will be replaced with a string that describes a time interval, such as “2 minutes”, “40 seconds” or “1 hour” +-#: js/misc/breakManager.js:1203 ++#: js/misc/breakManager.js:1207 + #, javascript-format + msgid "Take a break from the device and move around for %s" + msgid_plural "Take a break from the device and move around for %s" + msgstr[0] "Κάντε διάλειμμα από τη συσκευή και κινηθείτε για %s" + msgstr[1] "Κάντε διάλειμμα από τη συσκευή και κινηθείτε για %s" + +-#: js/misc/breakManager.js:1209 ++#: js/misc/breakManager.js:1213 + msgid "Time for an Eyesight Break" + msgstr "Ώρα για Διάλειμμα Όρασης" + + #. %s will be replaced with a string that describes a time interval, such as “2 minutes”, “40 seconds” or “1 hour” +-#: js/misc/breakManager.js:1212 ++#: js/misc/breakManager.js:1216 + #, javascript-format + msgid "" + "Take a break from the screen. Look at least 6 meters away for at least %s" +@@ -863,12 +863,12 @@ msgstr[1] "" + "Κάντε διάλειμμα από την οθόνη. Κοιτάξτε τουλάχιστον 6 μέτρα μακριά για " + "τουλάχιστον %s" + +-#: js/misc/breakManager.js:1218 ++#: js/misc/breakManager.js:1222 + msgid "Time for a Break" + msgstr "Ώρα για Διάλειμμα" + + #. %s will be replaced with a string that describes a time interval, such as “2 minutes”, “40 seconds” or “1 hour” +-#: js/misc/breakManager.js:1221 ++#: js/misc/breakManager.js:1225 + #, javascript-format + msgid "It’s time to take a break. Get away from the device for %s!" + msgid_plural "It’s time to take a break. Get away from the device for %s!" +@@ -876,144 +876,144 @@ msgstr[0] "Είναι ώρα για διάλειμμα. Απομακρυνθεί + msgstr[1] "Είναι ώρα για διάλειμμα. Απομακρυνθείτε από τη συσκευή για %s!" + + #. %s will be replaced with a string that describes a time interval, such as “2 minutes”, “40 seconds” or “1 hour” +-#: js/misc/breakManager.js:1245 ++#: js/misc/breakManager.js:1249 + #, javascript-format + msgid "You were due to take a break %s ago" + msgid_plural "You were due to take a break %s ago" + msgstr[0] "Θα έπρεπε να έχετε κάνει διάλειμμα %s πριν" + msgstr[1] "Θα έπρεπε να έχετε κάνει διάλειμμα %s πριν" + +-#: js/misc/breakManager.js:1251 ++#: js/misc/breakManager.js:1255 + msgid "Break Overdue" + msgstr "Καθυστερημένο Διάλειμμα" + +-#: js/misc/breakManager.js:1267 ++#: js/misc/breakManager.js:1271 + #, javascript-format + msgid "There is %s remaining in your break" + msgid_plural "There are %s remaining in your break" + msgstr[0] "Απομένει %s στο διάλειμμά σας" + msgstr[1] "Απομένουν %s στο διάλειμμά σας" + +-#: js/misc/breakManager.js:1273 ++#: js/misc/breakManager.js:1277 + msgid "Break Interrupted" + msgstr "Διάλειμμα Διακοπή" + + #. Translators: As in "Delay the break" +-#: js/misc/breakManager.js:1351 ++#: js/misc/breakManager.js:1355 + msgid "Delay" + msgstr "Καθυστέρηση" + + #. Translators: As in "Skip the break" +-#: js/misc/breakManager.js:1373 js/ui/welcomeDialog.js:61 ++#: js/misc/breakManager.js:1377 js/ui/welcomeDialog.js:61 + msgid "Skip" + msgstr "Παράλειψη" + + #. Translators: As in "Take the break" +-#: js/misc/breakManager.js:1395 ++#: js/misc/breakManager.js:1399 + msgid "Take" + msgstr "Κάντε" + + #. Translators: This is a notification to warn the user that a + #. screen time break will start shortly. +-#: js/misc/breakManager.js:1458 ++#: js/misc/breakManager.js:1462 + #, javascript-format + msgid "Break in %d second" + msgid_plural "Break in %d seconds" + msgstr[0] "Διάλειμμα σε %d δευτερόλεπτο" + msgstr[1] "Διάλειμμα σε %d δευτερόλεπτα" + +-#: js/misc/brightnessManager.js:169 js/ui/status/brightness.js:10 ++#: js/misc/brightnessManager.js:171 js/ui/status/brightness.js:10 + msgid "Brightness" + msgstr "Φωτεινότητα" + + #. Translators: The name of the power-off action in search +-#: js/misc/systemActions.js:93 ++#: js/misc/systemActions.js:94 + msgctxt "search-result" + msgid "Power Off" + msgstr "Απενεργοποίηση" + + #. Translators: A list of keywords that match the power-off action, separated by semicolons +-#: js/misc/systemActions.js:96 ++#: js/misc/systemActions.js:97 + msgid "power off;poweroff;shutdown;halt;stop" + msgstr "απενεργοποίηση;poweroff;τερματισμός;διακοπή;stop" + + #. Translators: The name of the restart action in search +-#: js/misc/systemActions.js:101 ++#: js/misc/systemActions.js:102 + msgctxt "search-result" + msgid "Restart" + msgstr "Επανεκκίνηση" + + #. Translators: A list of keywords that match the restart action, separated by semicolons +-#: js/misc/systemActions.js:104 ++#: js/misc/systemActions.js:105 + msgid "reboot;restart;" + msgstr "επανεκκίνηση;restart;" + + #. Translators: The name of the lock screen action in search +-#: js/misc/systemActions.js:109 ++#: js/misc/systemActions.js:110 + msgctxt "search-result" + msgid "Lock Screen" + msgstr "Κλείδωμα Οθόνης" + + #. Translators: A list of keywords that match the lock screen action, separated by semicolons +-#: js/misc/systemActions.js:112 ++#: js/misc/systemActions.js:113 + msgid "lock screen" + msgstr "κλείδωμα οθόνης" + + #. Translators: The name of the logout action in search +-#: js/misc/systemActions.js:117 ++#: js/misc/systemActions.js:118 + msgctxt "search-result" + msgid "Log Out" + msgstr "Αποσύνδεση" + + #. Translators: A list of keywords that match the logout action, separated by semicolons +-#: js/misc/systemActions.js:120 ++#: js/misc/systemActions.js:121 + msgid "logout;log out;sign off" + msgstr "αποσύνδεση;log out;sign off" + + #. Translators: The name of the suspend action in search +-#: js/misc/systemActions.js:125 ++#: js/misc/systemActions.js:126 + msgctxt "search-result" + msgid "Suspend" + msgstr "Αναστολή" + + #. Translators: A list of keywords that match the suspend action, separated by semicolons +-#: js/misc/systemActions.js:128 ++#: js/misc/systemActions.js:129 + msgid "suspend;sleep" + msgstr "αναστολή;sleep" + + #. Translators: The name of the switch user action in search +-#: js/misc/systemActions.js:133 ++#: js/misc/systemActions.js:134 + msgctxt "search-result" + msgid "Switch User" + msgstr "Αλλαγή Χρήστη" + + #. Translators: A list of keywords that match the switch user action, separated by semicolons +-#: js/misc/systemActions.js:136 ++#: js/misc/systemActions.js:137 + msgid "switch user" + msgstr "αλλαγή χρήστη" + + #. Translators: A list of keywords that match the lock orientation action, separated by semicolons +-#: js/misc/systemActions.js:143 ++#: js/misc/systemActions.js:144 + msgid "lock orientation;unlock orientation;screen;rotation" + msgstr "κλείδωμα προσανατολισμού;ξεκλείδωμα προσανατολισμού;οθόνη;περιστροφή" + + #. Translators: The name of the screenshot UI action in search +-#: js/misc/systemActions.js:148 ++#: js/misc/systemActions.js:149 + msgctxt "search-result" + msgid "Take a Screenshot" + msgstr "Λήψη Στιγμιότυπου Οθόνης" + + #. Translators: A list of keywords that match the screenshot UI action, separated by semicolons +-#: js/misc/systemActions.js:151 ++#: js/misc/systemActions.js:152 + msgid "screenshot;screencast;snip;capture;record" + msgstr "στιγμιότυπο οθόνης;βίντεο οθόνης;απόκομμα;καταγραφή;εγγραφή" + +-#: js/misc/systemActions.js:255 ++#: js/misc/systemActions.js:256 + msgctxt "search-result" + msgid "Unlock Screen Rotation" + msgstr "Ξεκλείδωμα Περιστροφής Οθόνης" + +-#: js/misc/systemActions.js:256 ++#: js/misc/systemActions.js:257 + msgctxt "search-result" + msgid "Lock Screen Rotation" + msgstr "Κλείδωμα Περιστροφής Οθόνης" +@@ -1022,22 +1022,22 @@ msgstr "Κλείδωμα Περιστροφής Οθόνης" + msgid "GNOME needs to save screen time data" + msgstr "Το GNOME χρειάζεται να αποθηκεύσει δεδομένα χρόνου οθόνης" + +-#: js/misc/timeLimitsManager.js:1124 ++#: js/misc/timeLimitsManager.js:1123 + #, javascript-format + msgid "Screen Time Limit in %d Minute" + msgid_plural "Screen Time Limit in %d Minutes" + msgstr[0] "Όριο Χρόνου Οθόνης σε %d Λεπτό" + msgstr[1] "Όριο Χρόνου Οθόνης σε %d Λεπτά" + +-#: js/misc/timeLimitsManager.js:1131 ++#: js/misc/timeLimitsManager.js:1130 + msgid "Your screen time limit is approaching" + msgstr "Το όριο χρόνου οθόνης σας πλησιάζει" + +-#: js/misc/timeLimitsManager.js:1145 ++#: js/misc/timeLimitsManager.js:1144 + msgid "Screen Time Limit Reached" + msgstr "Φτάσατε το Όριο Χρόνου Οθόνης" + +-#: js/misc/timeLimitsManager.js:1146 ++#: js/misc/timeLimitsManager.js:1145 + msgid "It’s time to stop using the device" + msgstr "Είναι ώρα να σταματήσετε τη χρήση της συσκευής" + +@@ -1125,7 +1125,7 @@ msgstr "%A, %H:%M" + #: js/misc/dateUtils.js:173 + #, no-c-format + msgid "%B %-d, %H:%M" +-msgstr "%B %-d, %H:%M" ++msgstr "%-d %B, %H:%M" + + #. Translators: this is the month name, day number, year + #. number followed by a time string in 24h format. +@@ -1133,7 +1133,7 @@ msgstr "%B %-d, %H:%M" + #: js/misc/dateUtils.js:179 + #, no-c-format + msgid "%B %-d %Y, %H:%M" +-msgstr "%B %-d %Y, %H:%M" ++msgstr "%-d %B %Y, %H:%M" + + #. Show only the time if date is on today + #. eslint-disable-line no-lonely-if +@@ -1170,7 +1170,7 @@ msgstr "%B %-d, %l:%M %p" + #: js/misc/dateUtils.js:208 + #, no-c-format + msgid "%B %-d %Y, %l:%M %p" +-msgstr "%B %-d %Y, %l:%M %p" ++msgstr "%-d %B %Y, %l:%M %p" + + #: js/portalHelper/main.js:98 + msgid "Your connection seems to be secure" +@@ -1375,15 +1375,15 @@ msgstr "%d" + msgid "Week %V" + msgstr "Εβδομάδα %V" + +-#: js/ui/calendar.js:773 ++#: js/ui/calendar.js:774 + msgid "No Notifications" + msgstr "Καμία ειδοποίηση" + +-#: js/ui/calendar.js:812 ++#: js/ui/calendar.js:815 + msgid "Clear" + msgstr "Εκκαθάριση" + +-#: js/ui/calendar.js:816 ++#: js/ui/calendar.js:819 + msgctxt "action" + msgid "Clear all notifications" + msgstr "Εκκαθάριση όλων των ειδοποιήσεων" +@@ -1470,11 +1470,11 @@ msgid "Service" + msgstr "Υπηρεσία" + + #: js/ui/components/networkAgent.js:371 js/ui/components/networkAgent.js:407 +-#: js/ui/components/networkAgent.js:745 js/ui/components/networkAgent.js:766 ++#: js/ui/components/networkAgent.js:744 js/ui/components/networkAgent.js:765 + msgid "Authentication required" + msgstr "Απαιτείται πιστοποίηση" + +-#: js/ui/components/networkAgent.js:372 js/ui/components/networkAgent.js:746 ++#: js/ui/components/networkAgent.js:372 js/ui/components/networkAgent.js:745 + #, javascript-format + msgid "" + "Passwords or encryption keys are required to access the wireless network “%s”" +@@ -1482,7 +1482,7 @@ msgstr "" + "Απαιτούνται κωδικοί πρόσβασης ή κλειδιά κρυπτογράφησης για πρόσβαση στο " + "ασύρματο δίκτυο «%s»" + +-#: js/ui/components/networkAgent.js:376 js/ui/components/networkAgent.js:750 ++#: js/ui/components/networkAgent.js:376 js/ui/components/networkAgent.js:749 + msgid "Wired 802.1X authentication" + msgstr "Πιστοποίηση ενσύρματου 802.1X" + +@@ -1490,15 +1490,15 @@ msgstr "Πιστοποίηση ενσύρματου 802.1X" + msgid "Network name" + msgstr "Όνομα δικτύου" + +-#: js/ui/components/networkAgent.js:387 js/ui/components/networkAgent.js:754 ++#: js/ui/components/networkAgent.js:387 js/ui/components/networkAgent.js:753 + msgid "DSL authentication" + msgstr "Πιστοποίηση DSL" + +-#: js/ui/components/networkAgent.js:394 js/ui/components/networkAgent.js:759 ++#: js/ui/components/networkAgent.js:394 js/ui/components/networkAgent.js:758 + msgid "PIN code required" + msgstr "Απαιτείται κωδικός PIN" + +-#: js/ui/components/networkAgent.js:395 js/ui/components/networkAgent.js:760 ++#: js/ui/components/networkAgent.js:395 js/ui/components/networkAgent.js:759 + msgid "PIN code is needed for the mobile broadband device" + msgstr "Ο κωδικός PIN απαιτείται για τη συσκευή κινητής ευρυζωνικής σύνδεσης" + +@@ -1506,14 +1506,14 @@ msgstr "Ο κωδικός PIN απαιτείται για τη συσκευή κ + msgid "PIN" + msgstr "PIN" + +-#: js/ui/components/networkAgent.js:408 js/ui/components/networkAgent.js:751 +-#: js/ui/components/networkAgent.js:755 js/ui/components/networkAgent.js:767 +-#: js/ui/components/networkAgent.js:771 ++#: js/ui/components/networkAgent.js:408 js/ui/components/networkAgent.js:750 ++#: js/ui/components/networkAgent.js:754 js/ui/components/networkAgent.js:766 ++#: js/ui/components/networkAgent.js:770 + #, javascript-format + msgid "A password is required to connect to “%s”" + msgstr "Απαιτείται συνθηματικό για σύνδεση στο «%s»" + +-#: js/ui/components/networkAgent.js:770 ++#: js/ui/components/networkAgent.js:769 + msgid "VPN password" + msgstr "Συνθηματικό VPN" + +@@ -1537,7 +1537,7 @@ msgstr "Πιστοποίηση" + msgid "Sorry, that didn’t work. Please try again." + msgstr "Συγγνώμη, αυτό δεν λειτούργησε. Παρακαλούμε προσπαθήστε ξανά." + +-#: js/ui/ctrlAltTab.js:23 js/ui/overviewControls.js:404 ++#: js/ui/ctrlAltTab.js:23 js/ui/overviewControls.js:407 + msgid "Windows" + msgstr "Παράθυρα" + +@@ -1558,7 +1558,7 @@ msgstr "Ταμπλό" + #. + #: js/ui/dateMenu.js:99 + msgid "%B %-d %Y" +-msgstr "%B %-d %Y" ++msgstr "%-d %B %Y" + + #. Translators: This is the accessible name of the date button shown + #. * below the time in the shell; it should combine the weekday and the +@@ -1572,13 +1572,13 @@ msgstr "%A %e %B %Y" + #: js/ui/dateMenu.js:173 + msgctxt "calendar heading" + msgid "%B %-d" +-msgstr "%B %-d" ++msgstr "%-d %B" + + #. Translators: Shown on calendar heading when selected day occurs on different year + #: js/ui/dateMenu.js:176 + msgctxt "calendar heading" + msgid "%B %-d %Y" +-msgstr "%B %-d %Y" ++msgstr "%-d %B %Y" + + #: js/ui/dateMenu.js:182 + msgid "Today" +@@ -1897,7 +1897,7 @@ msgstr "Απενεργοποίηση" + msgid "Leave Off" + msgstr "Να Παραμείνει Ανενεργό" + +-#: js/ui/keyboard.js:179 js/ui/status/keyboard.js:908 ++#: js/ui/keyboard.js:179 js/ui/status/keyboard.js:898 + msgid "Keyboard Settings" + msgstr "Ρυθμίσεις Πληκτρολογίου" + +@@ -2006,11 +2006,11 @@ msgstr "Άγνωστος Τίτλος" + #. in the search entry when no search is + #. active; it should not exceed ~30 + #. characters. +-#: js/ui/overviewControls.js:328 ++#: js/ui/overviewControls.js:330 + msgid "Type to search" + msgstr "Πληκτρολογήστε για Αναζήτηση" + +-#: js/ui/overviewControls.js:392 ++#: js/ui/overviewControls.js:395 + msgid "Apps" + msgstr "Εφαρμογές" + +@@ -2099,15 +2099,15 @@ msgstr "Η Επανεκκίνηση δεν είναι Διαθέσιμη στο + msgid "Restarting…" + msgstr "Επανεκκίνηση…" + +-#: js/ui/screenShield.js:233 ++#: js/ui/screenShield.js:227 + msgid "GNOME needs to lock the screen" + msgstr "Το GNOME χρειάζεται να Κλειδώσει την Οθόνη" + +-#: js/ui/screenShield.js:274 js/ui/screenShield.js:682 ++#: js/ui/screenShield.js:269 js/ui/screenShield.js:680 + msgid "Unable to lock" + msgstr "Αδυναμία Κλειδώματος" + +-#: js/ui/screenShield.js:275 js/ui/screenShield.js:683 ++#: js/ui/screenShield.js:270 js/ui/screenShield.js:681 + msgid "Lock was blocked by an app" + msgstr "Το Κλείδωμα Εμποδίσθηκε από μια Εφαρμογή" + +@@ -2116,118 +2116,118 @@ msgstr "Το Κλείδωμα Εμποδίσθηκε από μια Εφαρμο + msgid "Screen Capture" + msgstr "Αποτύπωση Οθόνης" + +-#: js/ui/screenshot.js:1271 ++#: js/ui/screenshot.js:1268 + msgid "Selection" + msgstr "Επιλογή" + +-#: js/ui/screenshot.js:1281 ++#: js/ui/screenshot.js:1278 + msgid "Area Selection" + msgstr "Επιλογή Περιοχής" + +-#: js/ui/screenshot.js:1286 ++#: js/ui/screenshot.js:1283 + msgid "Screen" + msgstr "Οθόνη" + +-#: js/ui/screenshot.js:1296 ++#: js/ui/screenshot.js:1293 + msgid "Screen Selection" + msgstr "Επιλογή Οθόνης" + +-#: js/ui/screenshot.js:1301 ++#: js/ui/screenshot.js:1298 + msgid "Window" + msgstr "Παράθυρο" + +-#: js/ui/screenshot.js:1311 ++#: js/ui/screenshot.js:1308 + msgid "Window Selection" + msgstr "Επιλογή Παραθύρου" + +-#: js/ui/screenshot.js:1336 js/ui/status/system.js:118 ++#: js/ui/screenshot.js:1333 js/ui/status/system.js:118 + msgid "Take Screenshot" + msgstr "Λήψη Στιγμιότυπου Οθόνης" + +-#: js/ui/screenshot.js:1352 ++#: js/ui/screenshot.js:1349 + msgid "Record Screen" + msgstr "Εγγραφή Οθόνης" + + #. Translators: since this string refers to an action, + #. it needs to be phrased as a verb. +-#: js/ui/screenshot.js:1369 ++#: js/ui/screenshot.js:1366 + msgid "Capture" + msgstr "Αποτύπωση" + +-#: js/ui/screenshot.js:1391 ++#: js/ui/screenshot.js:1388 + msgid "Show Pointer" + msgstr "Εμφάνιση Δρομέα" + + #. Translators: this is the folder where recorded + #. screencasts are stored. +-#: js/ui/screenshot.js:2019 ++#: js/ui/screenshot.js:2016 + msgid "Screencasts" + msgstr "Βίντεο Οθόνης" + + #. Translators: this is a filename used for screencast + #. * recording, where "%d" and "%t" date and time, e.g. + #. * "Screencast From 07-17-2013 10:00:46 PM" +-#: js/ui/screenshot.js:2024 ++#: js/ui/screenshot.js:2021 + #, no-c-format + msgid "Screencast From %d %t" + msgstr "Βίντεο Οθόνης από %d %t" + + #. Translators: notification title. +-#: js/ui/screenshot.js:2070 ++#: js/ui/screenshot.js:2067 + msgid "Screencast recorded" + msgstr "Καταγράφηκε Βίντεο Οθόνης" + + #. Translators: notification title. +-#: js/ui/screenshot.js:2083 ++#: js/ui/screenshot.js:2080 + msgid "Screencast failed to start" + msgstr "Αποτυχία Εκκίνησης Βίντεο Οθόνης" + + #. Translators: notification title. +-#: js/ui/screenshot.js:2089 ++#: js/ui/screenshot.js:2086 + msgid "Screencast ended: Out of disk space" + msgstr "Το Βίντεο Οθόνης Τερματίστηκε: Δεν Υπάρχει Χώρος στο Δίσκο" + + #. We can encourage user to try again on service crashes since the + #. recorder will auto-blocklist the pipeline that crashed. + #. Translators: notification title. +-#: js/ui/screenshot.js:2095 ++#: js/ui/screenshot.js:2092 + msgid "Screencast ended unexpectedly, please try again" + msgstr "Το Βίντεο Οθόνης Τερματίστηκε, Παρακαλούμε Ξαναπροσπαθήστε" + + #. Translators: notification title. +-#: js/ui/screenshot.js:2098 ++#: js/ui/screenshot.js:2095 + msgid "Screencast ended unexpectedly" + msgstr "Η Εγγραφή Οθόνης Τερματίστηκε Απροσδόκητα" + + #. Translators: notification body when a screencast was recorded. +-#: js/ui/screenshot.js:2111 ++#: js/ui/screenshot.js:2108 + msgid "Click here to view the video" + msgstr "Κάντε Κλικ Εδώ για Προβολή του Βίντεο" + + #. Translators: button on the screencast notification. + #. Translators: button on the screenshot notification. +-#: js/ui/screenshot.js:2119 js/ui/screenshot.js:2362 ++#: js/ui/screenshot.js:2116 js/ui/screenshot.js:2359 + msgid "Show in Files" + msgstr "Εμφάνιση στα Αρχεία" + + #. Translators: this is the name of the file that the screenshot is + #. saved to. The placeholder is a timestamp, e.g. "2017-05-21 12-24-03". +-#: js/ui/screenshot.js:2308 ++#: js/ui/screenshot.js:2305 + #, javascript-format + msgid "Screenshot From %s" + msgstr "Στιγμιότυπο Οθόνης από %s" + + #. Translators: notification title. +-#: js/ui/screenshot.js:2352 ++#: js/ui/screenshot.js:2349 + msgid "Screenshot captured" + msgstr "Καταγράφηκε Στιγμιότυπο Οθόνης" + + #. Translators: notification body when a screenshot was captured. +-#: js/ui/screenshot.js:2354 ++#: js/ui/screenshot.js:2351 + msgid "You can paste the image from the clipboard" + msgstr "Μπορείτε να Επικολλήσετε την Εικόνα από το Πρόχειρο" + +-#: js/ui/screenshot.js:2412 js/ui/screenshot.js:2574 ++#: js/ui/screenshot.js:2409 js/ui/screenshot.js:2571 + msgid "Screenshot taken" + msgstr "Ελήφθη Στιγμιότυπο Οθόνης" + +@@ -2239,7 +2239,7 @@ msgstr "Αναζήτηση" + msgid "No results" + msgstr "Δε Βρέθηκαν Αποτελέσματα" + +-#: js/ui/search.js:982 ++#: js/ui/search.js:985 + #, javascript-format + msgid "%d more" + msgid_plural "%d more" +@@ -2251,23 +2251,23 @@ msgstr[1] "%d περισσότερα" + msgid "Search" + msgstr "Αναζήτηση" + +-#: js/ui/shellEntry.js:21 ++#: js/ui/shellEntry.js:22 + msgid "Copy" + msgstr "Αντιγραφή" + +-#: js/ui/shellEntry.js:26 ++#: js/ui/shellEntry.js:27 + msgid "Paste" + msgstr "Επικόλληση" + +-#: js/ui/shellEntry.js:78 ++#: js/ui/shellEntry.js:79 + msgid "Show Text" + msgstr "Εμφάνιση Κειμένου" + +-#: js/ui/shellEntry.js:80 ++#: js/ui/shellEntry.js:81 + msgid "Hide Text" + msgstr "Απόκρυψη Κειμένου" + +-#: js/ui/shellEntry.js:174 ++#: js/ui/shellEntry.js:175 + msgid "Caps lock is on" + msgstr "Τα Κεφαλαία είναι Ενεργοποιημένα" + +@@ -2410,7 +2410,7 @@ msgstr "Χαμηλό" + msgid "High" + msgstr "Υψηλό" + +-#: js/ui/status/backlight.js:162 js/ui/status/keyboard.js:890 ++#: js/ui/status/backlight.js:162 js/ui/status/keyboard.js:880 + msgid "Keyboard" + msgstr "Πληκτρολόγιο" + +@@ -2474,27 +2474,27 @@ msgstr "Σκούρο Θέμα" + msgid "Do Not Disturb" + msgstr "Μην Ενοχλείτε" + +-#: js/ui/status/dwellClick.js:15 ++#: js/ui/status/dwellClick.js:14 + msgid "Single Click" + msgstr "Μονό Κλικ" + +-#: js/ui/status/dwellClick.js:20 ++#: js/ui/status/dwellClick.js:19 + msgid "Double Click" + msgstr "Διπλό Κλικ" + +-#: js/ui/status/dwellClick.js:25 ++#: js/ui/status/dwellClick.js:24 + msgid "Drag" + msgstr "Σύρσιμο" + +-#: js/ui/status/dwellClick.js:30 ++#: js/ui/status/dwellClick.js:29 + msgid "Secondary Click" + msgstr "Δευτερεύον Κλικ" + +-#: js/ui/status/dwellClick.js:39 ++#: js/ui/status/dwellClick.js:38 + msgid "Dwell Click" + msgstr "Κράτημα Κλικ" + +-#: js/ui/status/keyboard.js:907 ++#: js/ui/status/keyboard.js:897 + msgid "Show Keyboard Layout" + msgstr "Εμφάνιση Διάταξης Πληκτρολογίου" + +@@ -2945,24 +2945,24 @@ msgstr "Μετακίνηση στη δεξιά οθόνη" + msgid "Close" + msgstr "Κλείσιμο" + +-#: src/main.c:515 subprojects/extensions-tool/src/main.c:336 ++#: src/main.c:517 subprojects/extensions-tool/src/main.c:336 + msgid "Print version" + msgstr "Εμφάνιση έκδοσης" + +-#: src/main.c:521 ++#: src/main.c:523 + msgid "Mode used by GDM for login screen" + msgstr "Λειτουργία που χρησιμοποιείται από το GDM για την οθόνη σύνδεσης" + +-#: src/main.c:527 ++#: src/main.c:529 + msgid "Use a specific mode, e.g. “gdm” for login screen" + msgstr "" + "Χρήση μιας συγκεκριμένης λειτουργίας, π.χ. «gdm» για την οθόνη σύνδεσης" + +-#: src/main.c:533 ++#: src/main.c:535 + msgid "List possible modes" + msgstr "Λίστα πιθανών λειτουργιών" + +-#: src/main.c:539 ++#: src/main.c:541 + msgid "Force animations to be enabled" + msgstr "Αναγκαστική ενεργοποίηση κίνησης" + +@@ -2984,16 +2984,16 @@ msgstr "Τα συνθηματικά δεν ταιριάζουν" + msgid "Password cannot be blank" + msgstr "Το συνθηματικό δεν μπορεί να είναι κενός" + +-#: src/shell-polkit-authentication-agent.c:344 ++#: src/shell-polkit-authentication-agent.c:342 + msgid "Authentication dialog was dismissed by the user" + msgstr "Το παράθυρο πιστοποίησης έκλεισε από τον χρήστη" + +-#: src/st/st-icon-theme.c:1859 ++#: src/st/st-icon-theme.c:1857 + #, c-format + msgid "Icon '%s' not present in theme %s" + msgstr "Το εικονίδιο '%s' δεν υπάρχει στο θέμα %s" + +-#: src/st/st-icon-theme.c:3452 src/st/st-icon-theme.c:3755 ++#: src/st/st-icon-theme.c:3450 src/st/st-icon-theme.c:3753 + msgid "Failed to load icon" + msgstr "Αδυναμία φόρτωσης εικονιδίου" + +@@ -3015,15 +3015,15 @@ msgstr "" + "ρύθμιση προτιμήσεων και την αφαίρεση ή απενεργοποίηση ανεπιθύμητων " + "επεκτάσεων." + +-#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:70 ++#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:72 + msgid "Main Window" + msgstr "Κυρίως παράθυρο" + +-#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:74 ++#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:76 + msgid "Available Updates" + msgstr "Διαθέσιμες ενημερώσεις" + +-#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:78 ++#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:80 + msgid "Search View" + msgstr "Προβολή αναζήτησης" + diff --git a/debian/patches/Update-Thai-translation.patch b/debian/patches/Update-Thai-translation.patch new file mode 100644 index 000000000..3c0a77460 --- /dev/null +++ b/debian/patches/Update-Thai-translation.patch @@ -0,0 +1,1970 @@ +From: Aefgh Threenine +Date: Sat, 31 Jan 2026 10:34:11 +0000 +Subject: Update Thai translation + +Origin: upstream, 49.4, commit:156a171bf341c603ca3270759714ae9b8db6babf +--- + po/th.po | 798 ++++++++++++++++++++++++++++++++++++++------------------------- + 1 file changed, 480 insertions(+), 318 deletions(-) + +diff --git a/po/th.po b/po/th.po +index b1e52e9..26ceec9 100644 +--- a/po/th.po ++++ b/po/th.po +@@ -10,8 +10,8 @@ msgid "" + msgstr "" + "Project-Id-Version: gnome-shell master\n" + "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues/\n" +-"POT-Creation-Date: 2025-08-20 09:34+0000\n" +-"PO-Revision-Date: 2025-08-24 11:42+0700\n" ++"POT-Creation-Date: 2026-01-27 12:41+0000\n" ++"PO-Revision-Date: 2026-01-31 17:32+0700\n" + "Last-Translator: Atirut Wattanamongkol \n" + "Language-Team: Thai \n" + "Language: th\n" +@@ -19,7 +19,7 @@ msgstr "" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" + "Plural-Forms: nplurals=1; plural=0;\n" +-"X-Generator: Poedit 3.7\n" ++"X-Generator: Poedit 3.8\n" + "X-DL-Lang: th\n" + "X-DL-Module: gnome-shell\n" + "X-DL-Branch: main\n" +@@ -103,7 +103,7 @@ msgid "Open new window of pinned app 9" + msgstr "เปิดหน้าต่างใหม่ของแอปที่ปักหมุดตัวที่ 9" + + #. Translators: name of the folder under ~/Pictures for screenshots. +-#: data/50-gnome-shell-screenshots.xml:6 js/ui/screenshot.js:2279 ++#: data/50-gnome-shell-screenshots.xml:6 js/ui/screenshot.js:2292 + msgid "Screenshots" + msgstr "ภาพหน้าจอ" + +@@ -124,7 +124,7 @@ msgid "Record a screencast interactively" + msgstr "อัดภาพถ่ายทอดหน้าจอแบบอินเทอร์แอคทีฟ" + + #: data/50-gnome-shell-system.xml:6 data/X-GNOME-Shell-System.directory.desktop.in:2 +-#: js/ui/messageTray.js:1307 ++#: js/ui/messageTray.js:1314 + msgid "System" + msgstr "ระบบ" + +@@ -148,14 +148,6 @@ msgstr "แสดงหน้าภาพรวม" + msgid "Show all apps" + msgstr "แสดงแอปทั้งหมด" + +-#: data/org.gnome.Shell.desktop.in.in:3 +-msgid "GNOME Shell" +-msgstr "GNOME Shell" +- +-#: data/org.gnome.Shell.desktop.in.in:4 +-msgid "Window management and application launching" +-msgstr "การจัดการหน้าต่างและการเรียกใช้แอปพลิเคชัน" +- + #: data/org.gnome.shell.gschema.xml.in:6 + msgid "Enable internal tools useful for developers and testers from Alt-F2" + msgstr "เปิดใช้เครื่องมือภายในที่เป็นประโยชน์ต่อนักพัฒนาและนักทดสอบ ผ่านปุ่ม Alt-F2" +@@ -437,11 +429,35 @@ msgstr "เปิดแอปพลิเคชันตัวที่ 8 ขึ + msgid "Open a new instance of application 9" + msgstr "เปิดแอปพลิเคชันตัวที่ 9 ขึ้นมาอีกตัวหนึ่ง" + +-#: data/org.gnome.shell.gschema.xml.in:288 data/org.gnome.shell.gschema.xml.in:315 ++#: data/org.gnome.shell.gschema.xml.in:283 ++msgid "Screen brightness up" ++msgstr "เพิ่มความสว่างหน้าจอ" ++ ++#: data/org.gnome.shell.gschema.xml.in:287 ++msgid "Screen brightness up on current monitor" ++msgstr "เพิ่มความสว่างหน้าจอบนจอภาพปัจจุบัน" ++ ++#: data/org.gnome.shell.gschema.xml.in:291 ++msgid "Screen brightness down" ++msgstr "ลดความสว่างหน้าจอ" ++ ++#: data/org.gnome.shell.gschema.xml.in:295 ++msgid "Screen brightness down on current monitor" ++msgstr "ลดความสว่างหน้าจอบนจอภาพปัจจุบัน" ++ ++#: data/org.gnome.shell.gschema.xml.in:299 ++msgid "Screen brightness cycle" ++msgstr "ปรับความสว่างหน้าจอเป็นรอบ" ++ ++#: data/org.gnome.shell.gschema.xml.in:303 ++msgid "Screen brightness cycle on current monitor" ++msgstr "ปรับความสว่างหน้าจอเป็นรอบบนจอภาพปัจจุบัน" ++ ++#: data/org.gnome.shell.gschema.xml.in:312 data/org.gnome.shell.gschema.xml.in:339 + msgid "Limit switcher to current workspace." + msgstr "จำกัดตัวสลับไว้ที่พื้นที่ทำงานปัจจุบัน" + +-#: data/org.gnome.shell.gschema.xml.in:289 ++#: data/org.gnome.shell.gschema.xml.in:313 + msgid "" + "If true, only applications that have windows on the current workspace are shown in the switcher. " + "Otherwise, all applications are included." +@@ -449,11 +465,11 @@ msgstr "" + "ถ้าเป็น true จะมีเพียงแอปพลิเคชันที่มีหน้าต่างบนพื้นที่ทำงานปัจจุบันเท่านั้นที่จะแสดงในตัวสลับ ถ้าไม่เป็น true " + "แอปพลิเคชันทั้งหมดจะถูกรวมไว้ด้วย" + +-#: data/org.gnome.shell.gschema.xml.in:306 ++#: data/org.gnome.shell.gschema.xml.in:330 + msgid "The application icon mode." + msgstr "โหมดไอคอนแอปพลิเคชัน" + +-#: data/org.gnome.shell.gschema.xml.in:307 ++#: data/org.gnome.shell.gschema.xml.in:331 + msgid "" + "Configures how the windows are shown in the switcher. Valid possibilities are “thumbnail-only” " + "(shows a thumbnail of the window), “app-icon-only” (shows only the application icon) or “both”." +@@ -461,45 +477,45 @@ msgstr "" + "กำหนดค่าว่าจะแสดงหน้าต่างในตัวสลับอย่างไร ค่าที่ใช้ได้คือ “thumbnail-only” (แสดงรูปย่อของหน้าต่าง), “app-icon-only” " + "(แสดงเฉพาะไอคอนแอปพลิเคชัน) หรือ “both”" + +-#: data/org.gnome.shell.gschema.xml.in:316 ++#: data/org.gnome.shell.gschema.xml.in:340 + msgid "" + "If true, only windows from the current workspace are shown in the switcher. Otherwise, all windows " + "are included." + msgstr "ถ้าเป็น true จะมีเพียงหน้าต่างจากพื้นที่ทำงานปัจจุบันเท่านั้นที่จะแสดงในตัวสลับ มิฉะนั้น หน้าต่างทั้งหมดจะถูกรวมไว้" + +-#: data/org.gnome.shell.gschema.xml.in:326 ++#: data/org.gnome.shell.gschema.xml.in:350 + msgid "Locations" + msgstr "ตำแหน่งที่ตั้ง" + +-#: data/org.gnome.shell.gschema.xml.in:327 ++#: data/org.gnome.shell.gschema.xml.in:351 + msgid "The locations to show in world clocks" + msgstr "ตำแหน่งที่ตั้งที่จะแสดงในนาฬิกาโลก" + +-#: data/org.gnome.shell.gschema.xml.in:337 ++#: data/org.gnome.shell.gschema.xml.in:361 + msgid "Automatic location" + msgstr "ตำแหน่งที่ตั้งอัตโนมัติ" + +-#: data/org.gnome.shell.gschema.xml.in:338 ++#: data/org.gnome.shell.gschema.xml.in:362 + msgid "Whether to fetch the current location or not" + msgstr "กำหนดว่าจะดึงข้อมูลตำแหน่งที่ตั้งปัจจุบันหรือไม่" + +-#: data/org.gnome.shell.gschema.xml.in:345 ++#: data/org.gnome.shell.gschema.xml.in:369 + msgid "Location" + msgstr "ตำแหน่งที่ตั้ง" + +-#: data/org.gnome.shell.gschema.xml.in:346 ++#: data/org.gnome.shell.gschema.xml.in:370 + msgid "The location for which to show a forecast" + msgstr "ตำแหน่งที่ตั้งที่ต้องการให้แสดงข้อมูลพยากรณ์" + + #. Keep in sync with subprojects/extensions-app +-#: data/org.gnome.Shell.Extensions.desktop.in.in:4 ++#: data/org.gnome.Shell.Extensions.desktop.in:4 + #: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 + #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:3 + #: subprojects/extensions-app/data/ui/extensions-window.ui:57 + msgid "Extensions" + msgstr "ส่วนขยาย" + +-#: data/org.gnome.Shell.PortalHelper.desktop.in.in:2 ++#: data/org.gnome.Shell.PortalHelper.desktop.in:2 + msgid "Network Login" + msgstr "เข้าระบบเครือข่าย" + +@@ -507,51 +523,62 @@ msgstr "เข้าระบบเครือข่าย" + msgid "Utilities" + msgstr "อรรถประโยชน์" + +-#: js/dbusServices/extensions/ui/extension-error-page.ui:12 +-#: subprojects/extensions-app/data/ui/extensions-window.ui:275 +-msgid "Something’s gone wrong" +-msgstr "มีบางอย่างผิดปกติ" ++#: js/dbusServices/extensions/extensionPrefsDialog.js:71 ++msgid "Extension Error" ++msgstr "ส่วนขยายผิดพลาด" + +-#: js/dbusServices/extensions/ui/extension-error-page.ui:20 +-msgid "" +-"We’re very sorry, but there’s been a problem: the settings for this extension can’t be displayed. " +-"We recommend that you report the issue to the extension authors." +-msgstr "" +-"เราขออภัยอย่างที่สุด แต่มีปัญหาเกิดขึ้นคือ ไม่สามารถแสดงผลการตั้งค่าสำหรับส่วนขยายนี้ได้ " +-"เราขอแนะนำให้คุณรายงานปัญหานั้นแก่ผู้จัดทำส่วนขยาย" ++#. Translators: %s is an extension name ++#: js/dbusServices/extensions/extensionPrefsDialog.js:104 ++#, javascript-format ++msgid "Unable to display the settings for “%s”." ++msgstr "ไม่สามารถแสดงการตั้งค่าสำหรับ “%s”" ++ ++#. Translators: Link label in the phrase "Information about this ++#. problem may be available on the extension website" ++#: js/dbusServices/extensions/extensionPrefsDialog.js:110 ++msgid "extension website" ++msgstr "เว็บไซต์ส่วนขยาย" + +-#: js/dbusServices/extensions/ui/extension-error-page.ui:45 +-msgid "Technical Details" +-msgstr "รายละเอียดทางเทคนิค" ++#. Translators: %s is "extension website" ++#: js/dbusServices/extensions/extensionPrefsDialog.js:114 ++#, javascript-format ++msgid "Information about this problem may be available on the %s." ++msgstr "ข้อมูลเกี่ยวกับปัญหานี้อาจพบได้ที่ %s" + +-#: js/dbusServices/extensions/ui/extension-error-page.ui:87 +-msgid "Homepage" +-msgstr "หน้าแรก" ++#: js/dbusServices/extensions/ui/extension-error-page.ui:19 ++#: subprojects/extensions-app/data/ui/extension-row.ui:13 ++msgid "Error Details" ++msgstr "รายละเอียดข้อผิดพลาด" + +-#: js/dbusServices/extensions/ui/extension-error-page.ui:88 +-msgid "Visit extension homepage" +-msgstr "เยี่ยมชมหน้าแรกของส่วนขยาย" ++#: js/dbusServices/extensions/ui/extension-error-page.ui:26 ++msgid "Copy Error" ++msgstr "คัดลอกข้อผิดพลาด" + +-#: js/gdm/authPrompt.js:156 js/gdm/loginDialog.js:465 js/ui/audioDeviceSelection.js:60 ++#: js/gdm/authPrompt.js:157 js/gdm/loginDialog.js:514 js/ui/audioDeviceSelection.js:60 + #: js/ui/components/networkAgent.js:114 js/ui/components/polkitAgent.js:144 + #: js/ui/endSessionDialog.js:437 js/ui/extensionDownloader.js:276 js/ui/shellMountOperation.js:382 + #: js/ui/shellMountOperation.js:392 + msgid "Cancel" + msgstr "ยกเลิก" + +-#: js/gdm/authPrompt.js:324 js/ui/components/networkAgent.js:214 js/ui/components/networkAgent.js:234 ++#: js/gdm/authPrompt.js:335 js/ui/components/networkAgent.js:214 js/ui/components/networkAgent.js:234 + #: js/ui/components/networkAgent.js:266 js/ui/components/networkAgent.js:299 + #: js/ui/components/networkAgent.js:338 js/ui/components/networkAgent.js:351 + #: js/ui/components/polkitAgent.js:286 js/ui/shellMountOperation.js:332 ++#: subprojects/extensions-tool/src/command-upload.c:252 + msgid "Password" + msgstr "รหัสผ่าน" + +-#: js/gdm/loginDialog.js:326 ++#: js/gdm/loginDialog.js:327 + msgid "Choose Session" + msgstr "เลือกเซสชัน" + ++#: js/gdm/loginDialog.js:420 js/ui/status/accessibility.js:35 ++msgid "Accessibility" ++msgstr "สิ่งอำนวยความสะดวก" ++ + #. Translators: is running for +-#: js/gdm/loginDialog.js:423 ++#: js/gdm/loginDialog.js:472 + #, javascript-format + msgid "" + "Remote login is not possible because a remote session is already running for %s. To login remotely, " +@@ -561,7 +588,7 @@ msgstr "" + "คุณจะต้องออกจากเซสชันระยะไกลหรือบังคับหยุดเซสชันดังกล่าว" + + #. Translators: is running for +-#: js/gdm/loginDialog.js:426 ++#: js/gdm/loginDialog.js:475 + #, javascript-format + msgid "" + "Login is not possible because a remote session is already running for %s. To login, you must log " +@@ -571,7 +598,7 @@ msgstr "" + "คุณจะต้องออกจากเซสชันระยะไกลหรือบังคับหยุดเซสชันดังกล่าว" + + #. Translators: is running for +-#: js/gdm/loginDialog.js:429 ++#: js/gdm/loginDialog.js:478 + #, javascript-format + msgid "" + "Remote login is not possible because a local session is already running for %s. To login remotely, " +@@ -581,7 +608,7 @@ msgstr "" + "หากต้องการเข้าสู่ระบบจากระยะไกล คุณต้องออกจากเซสชันภายในเครื่องหรือบังคับหยุดเซสชันดังกล่าว" + + #. Translators: is running for +-#: js/gdm/loginDialog.js:432 ++#: js/gdm/loginDialog.js:481 + #, javascript-format + msgid "" + "Login is not possible because a session is already running for %s. To login, you must log out from " +@@ -590,43 +617,44 @@ msgstr "" + "ไม่สามารถเข้าสู่ระบบได้เนื่องจากเซสชันกำลังทำงานอยู่แล้วสำหรับ %s หากต้องการเข้าสู่ระบบ " + "คุณต้องออกจากเซสชันหรือบังคับหยุดเซสชันดังกล่าว" + +-#: js/gdm/loginDialog.js:441 ++#: js/gdm/loginDialog.js:490 + msgid "Session Already Running" + msgstr "เซสชันกำลังทำงานอยู่" + +-#: js/gdm/loginDialog.js:453 ++#: js/gdm/loginDialog.js:502 + msgid "Force stopping will quit any running apps and processes, and could result in data loss" + msgstr "การบังคับหยุดจะปิดแอปและโปรเซสที่ทำงานอยู่ และอาจส่งผลให้ข้อมูลสูญหายได้" + +-#: js/gdm/loginDialog.js:473 ++#: js/gdm/loginDialog.js:522 + msgid "Force Stop" + msgstr "บังคับให้หยุด" + +-#: js/gdm/loginDialog.js:551 ++#: js/gdm/loginDialog.js:600 + msgid "Not listed?" + msgstr "ไม่มีชื่อของคุณงั้นหรือ?" + + #. Translators: this message is shown below the username entry field + #. to clue the user in on how to login to the local network realm +-#: js/gdm/loginDialog.js:1072 ++#: js/gdm/loginDialog.js:1129 + #, javascript-format + msgid "(e.g., user or %s)" + msgstr "(เช่น ผู้ใช้ หรือ %s)" + +-#: js/gdm/loginDialog.js:1077 js/ui/components/networkAgent.js:258 ++#: js/gdm/loginDialog.js:1134 js/ui/components/networkAgent.js:258 + #: js/ui/components/networkAgent.js:293 js/ui/components/networkAgent.js:327 ++#: subprojects/extensions-tool/src/command-upload.c:234 + msgid "Username" + msgstr "ชื่อผู้ใช้" + +-#: js/gdm/loginDialog.js:1143 ++#: js/gdm/loginDialog.js:1200 + msgid "Login Attempt Timed Out" + msgstr "หมดเวลาการพยายามเข้าสู่ระบบ" + +-#: js/gdm/loginDialog.js:1144 ++#: js/gdm/loginDialog.js:1201 + msgid "Login took too long, please try again" + msgstr "การเข้าสู่ระบบใช้เวลานานเกินไป กรุณาลองใหม่อีกครั้ง" + +-#: js/gdm/loginDialog.js:1493 ++#: js/gdm/loginDialog.js:1550 + msgid "Login Window" + msgstr "หน้าต่างเข้าสู่ระบบ" + +@@ -803,94 +831,98 @@ msgid "Break in %d second" + msgid_plural "Break in %d seconds" + msgstr[0] "เตรียมพักในอีก %d วินาที" + ++#: js/misc/brightnessManager.js:171 js/ui/status/brightness.js:10 ++msgid "Brightness" ++msgstr "ความสว่าง" ++ + #. Translators: The name of the power-off action in search +-#: js/misc/systemActions.js:91 ++#: js/misc/systemActions.js:94 + msgctxt "search-result" + msgid "Power Off" + msgstr "ปิดเครื่อง" + + #. Translators: A list of keywords that match the power-off action, separated by semicolons +-#: js/misc/systemActions.js:94 ++#: js/misc/systemActions.js:97 + msgid "power off;poweroff;shutdown;halt;stop" + msgstr "ปิดเครื่อง;ปิดระบบ;หยุด" + + #. Translators: The name of the restart action in search +-#: js/misc/systemActions.js:99 ++#: js/misc/systemActions.js:102 + msgctxt "search-result" + msgid "Restart" + msgstr "รีสตาร์ท" + + #. Translators: A list of keywords that match the restart action, separated by semicolons +-#: js/misc/systemActions.js:102 ++#: js/misc/systemActions.js:105 + msgid "reboot;restart;" + msgstr "รีบูต;รีสตาร์ท" + + #. Translators: The name of the lock screen action in search +-#: js/misc/systemActions.js:107 ++#: js/misc/systemActions.js:110 + msgctxt "search-result" + msgid "Lock Screen" + msgstr "ล็อกหน้าจอ" + + #. Translators: A list of keywords that match the lock screen action, separated by semicolons +-#: js/misc/systemActions.js:110 ++#: js/misc/systemActions.js:113 + msgid "lock screen" + msgstr "ล็อกหน้าจอ" + + #. Translators: The name of the logout action in search +-#: js/misc/systemActions.js:115 ++#: js/misc/systemActions.js:118 + msgctxt "search-result" + msgid "Log Out" + msgstr "ออกจากระบบ" + + #. Translators: A list of keywords that match the logout action, separated by semicolons +-#: js/misc/systemActions.js:118 ++#: js/misc/systemActions.js:121 + msgid "logout;log out;sign off" + msgstr "ออกจากระบบ;ลงชื่อออก" + + #. Translators: The name of the suspend action in search +-#: js/misc/systemActions.js:123 ++#: js/misc/systemActions.js:126 + msgctxt "search-result" + msgid "Suspend" + msgstr "พักเครื่อง" + + #. Translators: A list of keywords that match the suspend action, separated by semicolons +-#: js/misc/systemActions.js:126 ++#: js/misc/systemActions.js:129 + msgid "suspend;sleep" + msgstr "พักเครื่อง;สลีป" + + #. Translators: The name of the switch user action in search +-#: js/misc/systemActions.js:131 ++#: js/misc/systemActions.js:134 + msgctxt "search-result" + msgid "Switch User" + msgstr "สลับผู้ใช้" + + #. Translators: A list of keywords that match the switch user action, separated by semicolons +-#: js/misc/systemActions.js:134 ++#: js/misc/systemActions.js:137 + msgid "switch user" + msgstr "สลับผู้ใช้;เปลี่ยนผู้ใช้" + + #. Translators: A list of keywords that match the lock orientation action, separated by semicolons +-#: js/misc/systemActions.js:141 ++#: js/misc/systemActions.js:144 + msgid "lock orientation;unlock orientation;screen;rotation" + msgstr "ล็อกการหมุน;ปลดล็อกการหมุน;หน้าจอ;การหมุน" + + #. Translators: The name of the screenshot UI action in search +-#: js/misc/systemActions.js:146 ++#: js/misc/systemActions.js:149 + msgctxt "search-result" + msgid "Take a Screenshot" + msgstr "ถ่ายภาพหน้าจอ" + + #. Translators: A list of keywords that match the screenshot UI action, separated by semicolons +-#: js/misc/systemActions.js:149 ++#: js/misc/systemActions.js:152 + msgid "screenshot;screencast;snip;capture;record" + msgstr "ภาพหน้าจอ;บันทึกหน้าจอ;ถ่าย;เก็บภาพ;บันทึก" + +-#: js/misc/systemActions.js:249 ++#: js/misc/systemActions.js:256 + msgctxt "search-result" + msgid "Unlock Screen Rotation" + msgstr "ปลดล็อกการหมุนหน้าจอ" + +-#: js/misc/systemActions.js:250 ++#: js/misc/systemActions.js:257 + msgctxt "search-result" + msgid "Lock Screen Rotation" + msgstr "ล็อกการหมุนหน้าจอ" +@@ -972,66 +1004,68 @@ msgstr[0] "%d ปีก่อน" + + #. Translators: Time in 24h format + #: js/misc/dateUtils.js:155 +-msgid "%H∶%M" +-msgstr "%H∶%M น." ++#| msgctxt "event list time" ++#| msgid "%H:%M" ++msgid "%H:%M" ++msgstr "%H:%M" + + #. Translators: this is the word "Yesterday" followed by a + #. time string in 24h format. i.e. "Yesterday, 14:30" + #: js/misc/dateUtils.js:161 + #, no-c-format +-msgid "Yesterday, %H∶%M" +-msgstr "เมื่อวาน %H∶%M น." ++msgid "Yesterday, %H:%M" ++msgstr "เมื่อวาน %H:%M น." + + #. Translators: this is the week day name followed by a time + #. string in 24h format. i.e. "Monday, 14:30" + #: js/misc/dateUtils.js:167 + #, no-c-format +-msgid "%A, %H∶%M" +-msgstr "%A %H∶%M น." ++msgid "%A, %H:%M" ++msgstr "%A %H:%M น." + + #. Translators: this is the month name and day number + #. followed by a time string in 24h format. + #. i.e. "May 25, 14:30" + #: js/misc/dateUtils.js:173 + #, no-c-format +-msgid "%B %-d, %H∶%M" +-msgstr "%-d %B %H∶%M น." ++msgid "%B %-d, %H:%M" ++msgstr "%-d %B %H:%M น." + + #. Translators: this is the month name, day number, year + #. number followed by a time string in 24h format. + #. i.e. "May 25 2012, 14:30" + #: js/misc/dateUtils.js:179 + #, no-c-format +-msgid "%B %-d %Y, %H∶%M" +-msgstr "%-d %B %EY %H∶%M น." ++msgid "%B %-d %Y, %H:%M" ++msgstr "%-d %B %EY %H:%M น." + + #. Show only the time if date is on today + #. eslint-disable-line no-lonely-if + #. Translators: Time in 12h format + #: js/misc/dateUtils.js:184 +-msgid "%l∶%M %p" ++msgid "%l:%M %p" + msgstr "%l:%M น. %p" + + #. Translators: this is the word "Yesterday" followed by a + #. time string in 12h format. i.e. "Yesterday, 2:30 pm" + #: js/misc/dateUtils.js:190 + #, no-c-format +-msgid "Yesterday, %l∶%M %p" ++msgid "Yesterday, %l:%M %p" + msgstr "เมื่อวาน %l:%M น. %p" + + #. Translators: this is the week day name followed by a time + #. string in 12h format. i.e. "Monday, 2:30 pm" + #: js/misc/dateUtils.js:196 + #, no-c-format +-msgid "%A, %l∶%M %p" +-msgstr "%A %l∶%M น. %p" ++msgid "%A, %l:%M %p" ++msgstr "%A %l:%M น. %p" + + #. Translators: this is the month name and day number + #. followed by a time string in 12h format. + #. i.e. "May 25, 2:30 pm" + #: js/misc/dateUtils.js:202 + #, no-c-format +-msgid "%B %-d, %l∶%M %p" ++msgid "%B %-d, %l:%M %p" + msgstr "%-d %B %l:%M น. %p" + + #. Translators: this is the month name, day number, year +@@ -1039,7 +1073,7 @@ msgstr "%-d %B %l:%M น. %p" + #. i.e. "May 25 2012, 2:30 pm" + #: js/misc/dateUtils.js:208 + #, no-c-format +-msgid "%B %-d %Y, %l∶%M %p" ++msgid "%B %-d %Y, %l:%M %p" + msgstr "%-d %B %EY %l:%M น. %p" + + #: js/portalHelper/main.js:98 +@@ -1066,21 +1100,21 @@ msgstr "ปฏิเสธ" + msgid "Allow" + msgstr "อนุญาต" + +-#: js/ui/appDisplay.js:1762 ++#: js/ui/appDisplay.js:1734 + msgid "Unnamed Folder" + msgstr "โฟลเดอร์ไม่มีชื่อ" + +-#: js/ui/appFavorites.js:163 ++#: js/ui/appFavorites.js:89 + #, javascript-format + msgid "%s has been pinned to the dash." + msgstr "%s ถูกปักหมุดไว้ที่แดชแล้ว" + +-#: js/ui/appFavorites.js:194 ++#: js/ui/appFavorites.js:120 + #, javascript-format + msgid "%s has been unpinned from the dash." + msgstr "%s ถูกเลิกปักหมุดจากแดชแล้ว" + +-#: js/ui/appFavorites.js:208 js/ui/main.js:309 ++#: js/ui/appFavorites.js:134 js/ui/main.js:316 + msgid "Undo" + msgstr "เลิกทำ" + +@@ -1101,7 +1135,7 @@ msgstr "รายละเอียดแอป" + msgid "Quit" + msgstr "ปิด" + +-#: js/ui/appMenu.js:160 js/ui/dash.js:248 ++#: js/ui/appMenu.js:160 js/ui/dash.js:245 + msgid "Unpin" + msgstr "เลิกปักหมุด" + +@@ -1110,11 +1144,11 @@ msgid "Pin to Dash" + msgstr "ปักหมุดไว้ที่แดช" + + #: js/ui/appMenu.js:178 +-msgid "Launch using Integrated Graphics Card" ++msgid "Launch Using Integrated Graphics Card" + msgstr "เรียกใช้งานโดยใช้กราฟิกการ์ดในตัว" + + #: js/ui/appMenu.js:179 +-msgid "Launch using Discrete Graphics Card" ++msgid "Launch Using Discrete Graphics Card" + msgstr "เรียกใช้งานโดยใช้กราฟิกการ์ดแยก" + + #: js/ui/audioDeviceSelection.js:46 +@@ -1133,7 +1167,7 @@ msgstr "หูฟัง" + msgid "Headset" + msgstr "ชุดหูฟัง" + +-#: js/ui/audioDeviceSelection.js:79 js/ui/status/volume.js:366 ++#: js/ui/audioDeviceSelection.js:79 js/ui/status/volume.js:367 + msgid "Microphone" + msgstr "ไมโครโฟน" + +@@ -1150,7 +1184,7 @@ msgid "Settings" + msgstr "การตั้งค่า" + + #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). +-#: js/ui/calendar.js:33 ++#: js/ui/calendar.js:32 + msgctxt "calendar-no-work" + msgid "06" + msgstr "06" +@@ -1160,43 +1194,43 @@ msgstr "06" + #. * NOTE: These grid abbreviations are always shown together + #. * and in order, e.g. "S M T W T F S". + #. +-#: js/ui/calendar.js:59 ++#: js/ui/calendar.js:58 + msgctxt "grid sunday" + msgid "S" + msgstr "อา" + + #. Translators: Calendar grid abbreviation for Monday +-#: js/ui/calendar.js:61 ++#: js/ui/calendar.js:60 + msgctxt "grid monday" + msgid "M" + msgstr "จ" + + #. Translators: Calendar grid abbreviation for Tuesday +-#: js/ui/calendar.js:63 ++#: js/ui/calendar.js:62 + msgctxt "grid tuesday" + msgid "T" + msgstr "อ" + + #. Translators: Calendar grid abbreviation for Wednesday +-#: js/ui/calendar.js:65 ++#: js/ui/calendar.js:64 + msgctxt "grid wednesday" + msgid "W" + msgstr "พ" + + #. Translators: Calendar grid abbreviation for Thursday +-#: js/ui/calendar.js:67 ++#: js/ui/calendar.js:66 + msgctxt "grid thursday" + msgid "T" + msgstr "พฤ" + + #. Translators: Calendar grid abbreviation for Friday +-#: js/ui/calendar.js:69 ++#: js/ui/calendar.js:68 + msgctxt "grid friday" + msgid "F" + msgstr "ศ" + + #. Translators: Calendar grid abbreviation for Saturday +-#: js/ui/calendar.js:71 ++#: js/ui/calendar.js:70 + msgctxt "grid saturday" + msgid "S" + msgstr "ส" +@@ -1207,7 +1241,7 @@ msgstr "ส" + #. * "%OB" is the new format specifier introduced in glibc 2.27, + #. * in most cases you should not change it. + #. +-#: js/ui/calendar.js:422 ++#: js/ui/calendar.js:421 + msgid "%OB" + msgstr "%OB" + +@@ -1220,25 +1254,25 @@ msgstr "%OB" + #. * in most cases you should not use the old "%B" here unless you + #. * absolutely know what you are doing. + #. +-#: js/ui/calendar.js:432 ++#: js/ui/calendar.js:431 + msgid "%OB %Y" + msgstr "%OB %EY" + +-#: js/ui/calendar.js:494 ++#: js/ui/calendar.js:493 + msgid "Previous month" + msgstr "เดือนที่แล้ว" + +-#: js/ui/calendar.js:512 ++#: js/ui/calendar.js:511 + msgid "Next month" + msgstr "เดือนต่อไป" + +-#: js/ui/calendar.js:663 ++#: js/ui/calendar.js:662 + #, no-javascript-format + msgctxt "date day number format" + msgid "%d" + msgstr "%d" + +-#: js/ui/calendar.js:722 ++#: js/ui/calendar.js:721 + msgid "Week %V" + msgstr "สัปดาห์ที่ %V" + +@@ -1246,15 +1280,11 @@ msgstr "สัปดาห์ที่ %V" + msgid "No Notifications" + msgstr "ไม่มีการแจ้งเตือน" + +-#: js/ui/calendar.js:832 +-msgid "Do Not Disturb" +-msgstr "ห้ามรบกวน" +- +-#: js/ui/calendar.js:853 ++#: js/ui/calendar.js:815 + msgid "Clear" + msgstr "ล้าง" + +-#: js/ui/calendar.js:857 ++#: js/ui/calendar.js:819 + msgctxt "action" + msgid "Clear all notifications" + msgstr "ล้างการแจ้งเตือนทั้งหมด" +@@ -1334,16 +1364,16 @@ msgid "Service" + msgstr "บริการ" + + #: js/ui/components/networkAgent.js:371 js/ui/components/networkAgent.js:407 +-#: js/ui/components/networkAgent.js:745 js/ui/components/networkAgent.js:766 ++#: js/ui/components/networkAgent.js:744 js/ui/components/networkAgent.js:765 + msgid "Authentication required" + msgstr "ต้องยืนยันตัวบุคคล" + +-#: js/ui/components/networkAgent.js:372 js/ui/components/networkAgent.js:746 ++#: js/ui/components/networkAgent.js:372 js/ui/components/networkAgent.js:745 + #, javascript-format + msgid "Passwords or encryption keys are required to access the wireless network “%s”" + msgstr "ต้องป้อนรหัสผ่านหรือกุญแจสำหรับเข้ารหัสลับเพื่อจะเข้าใช้เครือข่ายไร้สาย “%s”" + +-#: js/ui/components/networkAgent.js:376 js/ui/components/networkAgent.js:750 ++#: js/ui/components/networkAgent.js:376 js/ui/components/networkAgent.js:749 + msgid "Wired 802.1X authentication" + msgstr "การยืนยันตัวบุคคลกับเครือข่ายมีสาย 802.1X" + +@@ -1351,15 +1381,15 @@ msgstr "การยืนยันตัวบุคคลกับเครื + msgid "Network name" + msgstr "ชื่อเครือข่าย" + +-#: js/ui/components/networkAgent.js:387 js/ui/components/networkAgent.js:754 ++#: js/ui/components/networkAgent.js:387 js/ui/components/networkAgent.js:753 + msgid "DSL authentication" + msgstr "การยืนยันตัวบุคคลกับ DSL" + +-#: js/ui/components/networkAgent.js:394 js/ui/components/networkAgent.js:759 ++#: js/ui/components/networkAgent.js:394 js/ui/components/networkAgent.js:758 + msgid "PIN code required" + msgstr "ต้องการรหัส PIN" + +-#: js/ui/components/networkAgent.js:395 js/ui/components/networkAgent.js:760 ++#: js/ui/components/networkAgent.js:395 js/ui/components/networkAgent.js:759 + msgid "PIN code is needed for the mobile broadband device" + msgstr "ต้องการรหัส PIN ของอุปกรณ์บรอดแบนด์มือถือ" + +@@ -1367,14 +1397,14 @@ msgstr "ต้องการรหัส PIN ของอุปกรณ์บ + msgid "PIN" + msgstr "PIN" + +-#: js/ui/components/networkAgent.js:408 js/ui/components/networkAgent.js:751 +-#: js/ui/components/networkAgent.js:755 js/ui/components/networkAgent.js:767 +-#: js/ui/components/networkAgent.js:771 ++#: js/ui/components/networkAgent.js:408 js/ui/components/networkAgent.js:750 ++#: js/ui/components/networkAgent.js:754 js/ui/components/networkAgent.js:766 ++#: js/ui/components/networkAgent.js:770 + #, javascript-format + msgid "A password is required to connect to “%s”" + msgstr "ต้องป้อนรหัสผ่านเพื่อเชื่อมต่อกับ “%s”" + +-#: js/ui/components/networkAgent.js:770 ++#: js/ui/components/networkAgent.js:769 + msgid "VPN password" + msgstr "รหัสผ่าน VPN" + +@@ -1398,17 +1428,17 @@ msgstr "ยืนยันตัวบุคคล" + msgid "Sorry, that didn’t work. Please try again." + msgstr "ขออภัย ยังไม่ผ่าน โปรดลองใหม่" + +-#: js/ui/ctrlAltTab.js:23 js/ui/overviewControls.js:404 ++#: js/ui/ctrlAltTab.js:23 js/ui/overviewControls.js:407 + msgid "Windows" + msgstr "หน้าต่าง" + +-#: js/ui/dash.js:204 js/ui/dash.js:250 ++#: js/ui/dash.js:201 js/ui/dash.js:247 + msgid "Show Apps" + msgstr "แสดงแอปต่าง ๆ" + + #. Translators: this is the name of the dock/favorites area on + #. the bottom of the overview +-#: js/ui/dash.js:408 ++#: js/ui/dash.js:405 + msgid "Dash" + msgstr "แดช" + +@@ -1524,7 +1554,7 @@ msgctxt "button" + msgid "Log Out" + msgstr "ออกจากระบบ" + +-#: js/ui/endSessionDialog.js:70 js/ui/status/system.js:174 ++#: js/ui/endSessionDialog.js:70 js/ui/status/system.js:181 + msgctxt "title" + msgid "Power Off" + msgstr "ปิดเครื่อง" +@@ -1736,7 +1766,7 @@ msgstr "ปิด" + msgid "Leave Off" + msgstr "ปิดทิ้งไว้" + +-#: js/ui/keyboard.js:180 js/ui/status/keyboard.js:901 ++#: js/ui/keyboard.js:179 js/ui/status/keyboard.js:898 + msgid "Keyboard Settings" + msgstr "ตั้งค่าแป้นพิมพ์" + +@@ -1794,30 +1824,30 @@ msgstr "ดูซอร์ส" + msgid "Web Page" + msgstr "หน้าเว็บ" + +-#: js/ui/main.js:305 ++#: js/ui/main.js:312 + msgid "System was put in unsafe mode" + msgstr "ระบบถูกนำเข้าไปอยู่ในโหมดที่ไม่ปลอดภัย" + +-#: js/ui/main.js:306 ++#: js/ui/main.js:313 + msgid "Apps now have unrestricted access" + msgstr "ตอนนี้แอปจะมีสิทธิเข้าถึงต่าง ๆ แบบไม่จำกัด" + +-#: js/ui/main.js:366 ++#: js/ui/main.js:373 + msgid "Logged in as a privileged user" + msgstr "เข้าสู่ระบบในฐานะผู้ใช้สิทธิพิเศษอยู่" + +-#: js/ui/main.js:367 ++#: js/ui/main.js:374 + msgid "" + "Running a session as a privileged user should be avoided for security reasons. If possible, you " + "should log in as a normal user." + msgstr "" + "คุณควรหลีกเลี่ยงการเรียกใช้เซสชันในฐานะผู้ใช้สิทธิพิเศษเพื่อความปลอดภัยของระบบ ถ้าเป็นไปได้ ควรเข้าสู่ระบบในฐานะผู้ใช้ปกติ" + +-#: js/ui/main.js:415 ++#: js/ui/main.js:422 + msgid "Screen Lock disabled" + msgstr "การล็อกหน้าจอปิดใช้งานอยู่" + +-#: js/ui/main.js:416 ++#: js/ui/main.js:423 + msgid "Screen Locking requires the GNOME display manager" + msgstr "การล็อกหน้าจอต้องการตัวจัดการดิสเพลย์ GNOME" + +@@ -1843,11 +1873,11 @@ msgstr "ไม่ทราบชื่อ" + #. in the search entry when no search is + #. active; it should not exceed ~30 + #. characters. +-#: js/ui/overviewControls.js:328 ++#: js/ui/overviewControls.js:330 + msgid "Type to search" + msgstr "พิมพ์เพื่อค้นหา" + +-#: js/ui/overviewControls.js:392 ++#: js/ui/overviewControls.js:395 + msgid "Apps" + msgstr "แอป" + +@@ -1881,42 +1911,42 @@ msgstr "กำหนดปุ่มลัด" + msgid "Done" + msgstr "เสร็จ" + +-#: js/ui/padOsd.js:727 ++#: js/ui/padOsd.js:743 + msgid "Edit…" + msgstr "แก้ไข…" + +-#: js/ui/padOsd.js:774 ++#: js/ui/padOsd.js:791 + msgid "None" + msgstr "ไม่มี" + +-#: js/ui/padOsd.js:845 ++#: js/ui/padOsd.js:868 + msgid "Press a button to configure" + msgstr "กดปุ่มเพื่อตั้งค่า" + +-#: js/ui/padOsd.js:846 ++#: js/ui/padOsd.js:869 + msgid "Press Esc to exit" + msgstr "กด Esc เพื่อออก" + +-#: js/ui/padOsd.js:849 ++#: js/ui/padOsd.js:872 + msgid "Press any key to exit" + msgstr "กดแป้นใดก็ได้เพื่อออก" + + #. Translators: If there is no suitable word for "Activities" + #. in your language, you can use the word for "Overview". +-#: js/ui/panel.js:423 ++#: js/ui/panel.js:208 + msgid "Activities" + msgstr "กิจกรรม" + +-#: js/ui/panel.js:504 ++#: js/ui/panel.js:289 + msgctxt "System menu in the top bar" + msgid "System" + msgstr "ระบบ" + +-#: js/ui/panel.js:678 ++#: js/ui/panel.js:465 + msgid "Top Bar" + msgstr "แถบด้านบน" + +-#: js/ui/quickSettings.js:185 js/ui/quickSettings.js:340 ++#: js/ui/quickSettings.js:164 js/ui/quickSettings.js:263 + msgid "Open menu" + msgstr "เปิดเมนู" + +@@ -1936,147 +1966,147 @@ msgstr "ไม่สามารถเริ่มใหม่ได้บน Wa + msgid "Restarting…" + msgstr "กำลังเริ่มใหม่…" + +-#: js/ui/screenShield.js:233 ++#: js/ui/screenShield.js:227 + msgid "GNOME needs to lock the screen" + msgstr "GNOME จำเป็นต้องล็อกหน้าจอ" + +-#: js/ui/screenShield.js:274 js/ui/screenShield.js:667 ++#: js/ui/screenShield.js:269 js/ui/screenShield.js:680 + msgid "Unable to lock" + msgstr "ไม่สามารถล็อกได้" + +-#: js/ui/screenShield.js:275 js/ui/screenShield.js:668 ++#: js/ui/screenShield.js:270 js/ui/screenShield.js:681 + msgid "Lock was blocked by an app" + msgstr "การล็อกถูกบล็อกโดยแอป" + +-#: js/ui/screenshot.js:1250 ++#. Translators: notification source name for screenshots and recordings. ++#: js/ui/screenshot.js:40 ++msgid "Screen Capture" ++msgstr "จับภาพหน้าจอ" ++ ++#: js/ui/screenshot.js:1268 + msgid "Selection" + msgstr "ส่วนที่เลือก" + +-#: js/ui/screenshot.js:1260 ++#: js/ui/screenshot.js:1278 + msgid "Area Selection" + msgstr "เลือกพื้นที่" + +-#: js/ui/screenshot.js:1265 ++#: js/ui/screenshot.js:1283 + msgid "Screen" + msgstr "หน้าจอ" + +-#: js/ui/screenshot.js:1275 ++#: js/ui/screenshot.js:1293 + msgid "Screen Selection" + msgstr "เลือกหน้าจอ" + +-#: js/ui/screenshot.js:1280 ++#: js/ui/screenshot.js:1298 + msgid "Window" + msgstr "หน้าต่าง" + +-#: js/ui/screenshot.js:1290 ++#: js/ui/screenshot.js:1308 + msgid "Window Selection" + msgstr "เลือกหน้าต่าง" + +-#: js/ui/screenshot.js:1315 js/ui/status/system.js:111 ++#: js/ui/screenshot.js:1333 js/ui/status/system.js:118 + msgid "Take Screenshot" + msgstr "ถ่ายภาพ" + +-#: js/ui/screenshot.js:1331 ++#: js/ui/screenshot.js:1349 + msgid "Record Screen" + msgstr "บันทึก" + + #. Translators: since this string refers to an action, + #. it needs to be phrased as a verb. +-#: js/ui/screenshot.js:1348 ++#: js/ui/screenshot.js:1366 + msgid "Capture" + msgstr "จับภาพ" + +-#: js/ui/screenshot.js:1370 ++#: js/ui/screenshot.js:1388 + msgid "Show Pointer" + msgstr "แสดงตัวชี้" + + #. Translators: this is the folder where recorded + #. screencasts are stored. +-#: js/ui/screenshot.js:1998 ++#: js/ui/screenshot.js:2016 + msgid "Screencasts" + msgstr "บันทึกหน้าจอ" + + #. Translators: this is a filename used for screencast + #. * recording, where "%d" and "%t" date and time, e.g. + #. * "Screencast From 07-17-2013 10:00:46 PM" +-#: js/ui/screenshot.js:2003 ++#: js/ui/screenshot.js:2021 + #, no-c-format + msgid "Screencast From %d %t" + msgstr "บันทึกหน้าจอจาก %d %t" + + #. Translators: notification title. +-#: js/ui/screenshot.js:2049 ++#: js/ui/screenshot.js:2067 + msgid "Screencast recorded" + msgstr "บันทึกหน้าจอแล้ว" + + #. Translators: notification title. +-#: js/ui/screenshot.js:2062 ++#: js/ui/screenshot.js:2080 + msgid "Screencast failed to start" + msgstr "ไม่สามารถเริ่มการบันทึกหน้าจอได้" + + #. Translators: notification title. +-#: js/ui/screenshot.js:2068 ++#: js/ui/screenshot.js:2086 + msgid "Screencast ended: Out of disk space" + msgstr "การบันทึกหน้าจอสิ้นสุด: เนื้อที่ดิสก์หมดแล้ว" + + #. We can encourage user to try again on service crashes since the + #. recorder will auto-blocklist the pipeline that crashed. + #. Translators: notification title. +-#: js/ui/screenshot.js:2074 ++#: js/ui/screenshot.js:2092 + msgid "Screencast ended unexpectedly, please try again" + msgstr "การบันทึกหน้าจอสิ้นสุดอย่างไม่คาดคิด โปรดลองอีกครั้ง" + + #. Translators: notification title. +-#: js/ui/screenshot.js:2077 ++#: js/ui/screenshot.js:2095 + msgid "Screencast ended unexpectedly" + msgstr "การบันทึกหน้าจอสิ้นสุดอย่างไม่คาดคิด" + +-#. Translators: notification source name. +-#: js/ui/screenshot.js:2087 js/ui/screenshot.js:2334 +-msgid "Screenshot" +-msgstr "ภาพหน้าจอ" +- + #. Translators: notification body when a screencast was recorded. +-#: js/ui/screenshot.js:2094 +-msgid "Click here to view the video." ++#: js/ui/screenshot.js:2108 ++msgid "Click here to view the video" + msgstr "คลิกที่นี่เพื่อดูวิดีโอ" + + #. Translators: button on the screencast notification. + #. Translators: button on the screenshot notification. +-#: js/ui/screenshot.js:2102 js/ui/screenshot.js:2350 ++#: js/ui/screenshot.js:2116 js/ui/screenshot.js:2359 + msgid "Show in Files" + msgstr "แสดงในไฟล์" + + #. Translators: this is the name of the file that the screenshot is + #. saved to. The placeholder is a timestamp, e.g. "2017-05-21 12-24-03". +-#: js/ui/screenshot.js:2292 ++#: js/ui/screenshot.js:2305 + #, javascript-format + msgid "Screenshot From %s" + msgstr "ภาพหน้าจอจาก %s" + + #. Translators: notification title. +-#: js/ui/screenshot.js:2340 ++#: js/ui/screenshot.js:2349 + msgid "Screenshot captured" + msgstr "จับภาพหน้าจอแล้ว" + + #. Translators: notification body when a screenshot was captured. +-#: js/ui/screenshot.js:2342 +-msgid "You can paste the image from the clipboard." ++#: js/ui/screenshot.js:2351 ++msgid "You can paste the image from the clipboard" + msgstr "คุณสามารถวางรูปภาพจากคลิปบอร์ดได้" + +-#: js/ui/screenshot.js:2401 js/ui/screenshot.js:2565 ++#: js/ui/screenshot.js:2409 js/ui/screenshot.js:2571 + msgid "Screenshot taken" + msgstr "ถ่ายภาพหน้าจอแล้ว" + +-#: js/ui/search.js:832 +-msgid "Searching…" +-msgstr "กำลังค้นหา…" ++#: js/ui/search.js:847 ++msgid "Searching" ++msgstr "กำลังค้นหา" + +-#: js/ui/search.js:834 ++#: js/ui/search.js:850 + msgid "No results" + msgstr "ไม่พบผลลัพธ์" + +-#: js/ui/search.js:965 ++#: js/ui/search.js:985 + #, javascript-format + msgid "%d more" + msgid_plural "%d more" +@@ -2086,23 +2116,23 @@ msgstr[0] "อีก %d" + msgid "Search" + msgstr "ค้นหา" + +-#: js/ui/shellEntry.js:21 ++#: js/ui/shellEntry.js:22 + msgid "Copy" + msgstr "คัดลอก" + +-#: js/ui/shellEntry.js:26 ++#: js/ui/shellEntry.js:27 + msgid "Paste" + msgstr "วาง" + +-#: js/ui/shellEntry.js:78 ++#: js/ui/shellEntry.js:79 + msgid "Show Text" + msgstr "แสดงข้อความ" + +-#: js/ui/shellEntry.js:80 ++#: js/ui/shellEntry.js:81 + msgid "Hide Text" + msgstr "ซ่อนข้อความ" + +-#: js/ui/shellEntry.js:174 ++#: js/ui/shellEntry.js:175 + msgid "Caps lock is on" + msgstr "Caps lock เปิดอยู่" + +@@ -2150,51 +2180,47 @@ msgstr "เปิด “%s”" + msgid "The PIM must be a number or empty" + msgstr "PIM จะต้องเป็นตัวเลขหรือว่างเปล่า" + +-#: js/ui/status/accessibility.js:34 +-msgid "Accessibility" +-msgstr "สิ่งอำนวยความสะดวก" +- +-#: js/ui/status/accessibility.js:44 ++#: js/ui/status/accessibility.js:45 js/ui/status/accessibility.js:155 + msgid "High Contrast" + msgstr "สีตัดกัน" + +-#: js/ui/status/accessibility.js:47 ++#: js/ui/status/accessibility.js:48 js/ui/status/accessibility.js:171 + msgid "Zoom" + msgstr "ซูม" + +-#: js/ui/status/accessibility.js:54 ++#: js/ui/status/accessibility.js:55 js/ui/status/accessibility.js:223 + msgid "Screen Reader" + msgstr "โปรแกรมอ่านหน้าจอ" + +-#: js/ui/status/accessibility.js:58 ++#: js/ui/status/accessibility.js:59 js/ui/status/accessibility.js:239 + msgid "Screen Keyboard" + msgstr "แป้นพิมพ์บนจอ" + +-#: js/ui/status/accessibility.js:62 ++#: js/ui/status/accessibility.js:63 js/ui/status/accessibility.js:255 + msgid "Visual Alerts" + msgstr "แจ้งเตือนด้วยภาพ" + +-#: js/ui/status/accessibility.js:66 ++#: js/ui/status/accessibility.js:67 js/ui/status/accessibility.js:271 + msgid "Sticky Keys" + msgstr "ค้างปุ่มกด" + +-#: js/ui/status/accessibility.js:70 ++#: js/ui/status/accessibility.js:71 js/ui/status/accessibility.js:287 + msgid "Slow Keys" + msgstr "พิมพ์แบบช้า" + +-#: js/ui/status/accessibility.js:74 ++#: js/ui/status/accessibility.js:75 js/ui/status/accessibility.js:303 + msgid "Bounce Keys" + msgstr "ป้องกันการกดแป้นรัว" + +-#: js/ui/status/accessibility.js:78 ++#: js/ui/status/accessibility.js:79 js/ui/status/accessibility.js:319 + msgid "Mouse Keys" + msgstr "บังคับเมาส์ด้วยแป้น" + +-#: js/ui/status/accessibility.js:83 ++#: js/ui/status/accessibility.js:84 + msgid "Accessibility Settings" + msgstr "ตั้งค่าสิ่งอำนวยความสะดวก" + +-#: js/ui/status/accessibility.js:123 ++#: js/ui/status/accessibility.js:124 js/ui/status/accessibility.js:187 + msgid "Large Text" + msgstr "อักษรขนาดใหญ่" + +@@ -2241,10 +2267,14 @@ msgstr "ต่ำ" + msgid "High" + msgstr "สูง" + +-#: js/ui/status/backlight.js:162 js/ui/status/keyboard.js:883 ++#: js/ui/status/backlight.js:162 js/ui/status/keyboard.js:880 + msgid "Keyboard" + msgstr "แป้นพิมพ์" + ++#: js/ui/status/backlight.js:164 ++msgid "Open keyboard brightness menu" ++msgstr "เปิดเมนูความสว่างแป้นพิมพ์" ++ + #: js/ui/status/bluetooth.js:246 js/ui/status/network.js:360 + msgid "Disconnect" + msgstr "ตัดการเชื่อมต่อ" +@@ -2261,58 +2291,66 @@ msgstr "ตัดการเชื่อมต่อกับ %s" + msgid "Connect to %s" + msgstr "เชื่อมต่อกับ %s" + +-#: js/ui/status/bluetooth.js:276 js/ui/status/bluetooth.js:278 ++#: js/ui/status/bluetooth.js:277 js/ui/status/bluetooth.js:281 + msgid "Bluetooth" + msgstr "บลูทูธ" + +-#: js/ui/status/bluetooth.js:301 js/ui/status/network.js:1920 ++#: js/ui/status/bluetooth.js:278 ++msgid "Open Bluetooth menu" ++msgstr "เปิดเมนูบลูทูธ" ++ ++#: js/ui/status/bluetooth.js:304 js/ui/status/network.js:1925 + msgid "Bluetooth Settings" + msgstr "ตั้งค่าบลูทูธ" + +-#: js/ui/status/bluetooth.js:348 ++#: js/ui/status/bluetooth.js:351 + msgid "No available or connected devices" + msgstr "ไม่มีอุปกรณ์ที่ใช้งานได้หรือที่เชื่อมต่ออยู่" + +-#: js/ui/status/bluetooth.js:349 ++#: js/ui/status/bluetooth.js:352 + msgid "Turn on Bluetooth to connect to devices" + msgstr "เปิดบลูทูธเพื่อเชื่อมต่อกับอุปกรณ์ต่าง ๆ" + + #. Translators: This is the number of connected bluetooth devices +-#: js/ui/status/bluetooth.js:413 ++#: js/ui/status/bluetooth.js:416 + #, javascript-format + msgid "%d Connected" + msgid_plural "%d Connected" + msgstr[0] "เชื่อมต่ออยู่ %d" + +-#: js/ui/status/brightness.js:32 +-msgid "Brightness" +-msgstr "ความสว่าง" ++#: js/ui/status/brightness.js:42 ++msgid "Open brightness menu" ++msgstr "เปิดเมนูความสว่าง" + + #: js/ui/status/darkMode.js:12 + msgid "Dark Style" + msgstr "โหมดมืด" + +-#: js/ui/status/dwellClick.js:15 ++#: js/ui/status/doNotDisturb.js:10 ++msgid "Do Not Disturb" ++msgstr "ห้ามรบกวน" ++ ++#: js/ui/status/dwellClick.js:14 + msgid "Single Click" + msgstr "คลิกครั้งเดียว" + +-#: js/ui/status/dwellClick.js:20 ++#: js/ui/status/dwellClick.js:19 + msgid "Double Click" + msgstr "คลิกสองครั้ง" + +-#: js/ui/status/dwellClick.js:25 ++#: js/ui/status/dwellClick.js:24 + msgid "Drag" + msgstr "ลาก" + +-#: js/ui/status/dwellClick.js:30 ++#: js/ui/status/dwellClick.js:29 + msgid "Secondary Click" + msgstr "คลิกปุ่มรอง" + +-#: js/ui/status/dwellClick.js:39 ++#: js/ui/status/dwellClick.js:38 + msgid "Dwell Click" + msgstr "คลิกเมื่อวางแช่" + +-#: js/ui/status/keyboard.js:900 ++#: js/ui/status/keyboard.js:897 + msgid "Show Keyboard Layout" + msgstr "แสดงผังแป้นพิมพ์" + +@@ -2362,72 +2400,92 @@ msgid "%s, %s, %s" + msgstr "%s, %s, %s" + + #. Translators: %s is a network identifier +-#: js/ui/status/network.js:1165 ++#: js/ui/status/network.js:1166 + #, javascript-format + msgid "%s Hotspot" + msgstr "ฮอตสปอต %s" + +-#: js/ui/status/network.js:1446 ++#: js/ui/status/network.js:1447 + #, javascript-format + msgid "%d connected" + msgid_plural "%d connected" + msgstr[0] "เชื่อมต่ออยู่ %d" + +-#: js/ui/status/network.js:1544 js/ui/status/network.js:1560 ++#: js/ui/status/network.js:1545 js/ui/status/network.js:1562 + msgid "VPN" + msgstr "VPN" + +-#: js/ui/status/network.js:1545 ++#: js/ui/status/network.js:1546 ++msgid "Open VPN menu" ++msgstr "เปิดเมนู VPN" ++ ++#: js/ui/status/network.js:1547 + msgid "VPN Settings" + msgstr "ตั้งค่า VPN" + +-#: js/ui/status/network.js:1805 ++#: js/ui/status/network.js:1807 + msgid "Wi–Fi" + msgstr "Wi–Fi" + +-#: js/ui/status/network.js:1807 ++#: js/ui/status/network.js:1808 ++msgid "Open Wi–Fi menu" ++msgstr "เปิดเมนู Wi-Fi" ++ ++#: js/ui/status/network.js:1810 + msgid "All Networks" + msgstr "เครือข่ายทั้งหมด" + +-#: js/ui/status/network.js:1904 ++#: js/ui/status/network.js:1907 + msgid "Wired Connections" + msgstr "การเชื่อมต่อแบบมีสาย" + +-#: js/ui/status/network.js:1905 ++#: js/ui/status/network.js:1908 ++msgid "Open wired connections menu" ++msgstr "เปิดเมนูการเชื่อมต่อแบบมีสาย" ++ ++#: js/ui/status/network.js:1909 + msgid "Wired Settings" + msgstr "ตั้งค่าการเชื่อมต่อแบบมีสาย" + +-#: js/ui/status/network.js:1919 ++#: js/ui/status/network.js:1923 + msgid "Bluetooth Tethers" + msgstr "การเชื่อมโยงบลูทูธ" + ++#: js/ui/status/network.js:1924 ++msgid "Open Bluetooth tethers menu" ++msgstr "เปิดเมนูการเชื่อมโยงบลูทูธ" ++ + #. Translators: "Tether" from "Bluetooth Tether" +-#: js/ui/status/network.js:1926 ++#: js/ui/status/network.js:1931 + msgid "Tether" + msgstr "การเชื่อมโยง" + +-#: js/ui/status/network.js:1939 ++#: js/ui/status/network.js:1944 + msgid "Mobile Connections" + msgstr "การเชื่อมต่อมือถือ" + +-#: js/ui/status/network.js:1941 ++#: js/ui/status/network.js:1945 ++msgid "Open mobile connections menu" ++msgstr "เปิดเมนูการเชื่อมต่อมือถือ" ++ ++#: js/ui/status/network.js:1947 + msgid "Mobile Broadband Settings" + msgstr "ตั้งค่าบรอดแบนด์บนมือถือ" + + #. Translators: "Mobile" from "Mobile Broadband" +-#: js/ui/status/network.js:1950 ++#: js/ui/status/network.js:1956 + msgid "Mobile" + msgstr "มือถือ" + +-#: js/ui/status/network.js:1984 +-msgid "Sign Into Wi–Fi Network" +-msgstr "ลงชื่อเข้าใช้เครือข่าย Wi-Fi" ++#: js/ui/status/network.js:1990 ++msgid "Sign in to Network" ++msgstr "ลงชื่อเข้าใช้เครือข่าย" + +-#: js/ui/status/network.js:2171 ++#: js/ui/status/network.js:2177 + msgid "Connection failed" + msgstr "เชื่อมต่อไม่สำเร็จ" + +-#: js/ui/status/network.js:2172 ++#: js/ui/status/network.js:2178 + msgid "Activation of network connection failed" + msgstr "เปิดใช้การเชื่อมต่อไม่สำเร็จ" + +@@ -2450,11 +2508,20 @@ msgctxt "Power profile" + msgid "Power Saver" + msgstr "ประหยัดพลังงาน" + +-#: js/ui/status/powerProfiles.js:39 js/ui/status/powerProfiles.js:69 ++#: js/ui/status/powerProfiles.js:35 ++msgctxt "Power profile" ++msgid "Custom" ++msgstr "กำหนดเอง" ++ ++#: js/ui/status/powerProfiles.js:45 js/ui/status/powerProfiles.js:77 + msgid "Power Mode" + msgstr "โหมดพลังงาน" + +-#: js/ui/status/powerProfiles.js:71 ++#: js/ui/status/powerProfiles.js:46 ++msgid "Open power profiles menu" ++msgstr "เปิดเมนูโปรไฟล์พลังงาน" ++ ++#: js/ui/status/powerProfiles.js:79 + msgid "Power Settings" + msgstr "ตั้งค่าพลังงาน" + +@@ -2470,31 +2537,31 @@ msgstr "หยุดแชร์หน้าจอ" + msgid "Airplane Mode" + msgstr "โหมดเครื่องบิน" + +-#: js/ui/status/system.js:168 ++#: js/ui/status/system.js:175 + msgid "Power Off Menu" + msgstr "เมนูปิดเครื่อง" + +-#: js/ui/status/system.js:176 ++#: js/ui/status/system.js:183 + msgid "Suspend" + msgstr "พักเครื่อง" + +-#: js/ui/status/system.js:181 ++#: js/ui/status/system.js:188 + msgid "Restart…" + msgstr "รีสตาร์ท…" + +-#: js/ui/status/system.js:186 ++#: js/ui/status/system.js:193 + msgid "Power Off…" + msgstr "ปิดเครื่อง…" + +-#: js/ui/status/system.js:193 subprojects/extensions-app/data/ui/extensions-window.ui:124 ++#: js/ui/status/system.js:200 + msgid "Log Out…" + msgstr "ออกจากระบบ…" + +-#: js/ui/status/system.js:198 ++#: js/ui/status/system.js:205 + msgid "Switch User…" + msgstr "สลับผู้ใช้…" + +-#: js/ui/status/system.js:242 ++#: js/ui/status/system.js:249 + msgctxt "action" + msgid "Lock Screen" + msgstr "ล็อกหน้าจอ" +@@ -2546,10 +2613,18 @@ msgstr "ความดังเสียง" + msgid "Sound Output" + msgstr "ช่องเสียงออก" + +-#: js/ui/status/volume.js:384 ++#: js/ui/status/volume.js:310 ++msgid "Open sound output menu" ++msgstr "เปิดเมนูช่องเสียงออก" ++ ++#: js/ui/status/volume.js:385 + msgid "Sound Input" + msgstr "ช่องเสียงเข้า" + ++#: js/ui/status/volume.js:386 ++msgid "Open sound input menu" ++msgstr "เปิดเมนูช่องเสียงเข้า" ++ + #. Translators: this is for display mirroring i.e. cloning. + #. * Try to keep it under around 15 characters. + #. +@@ -2580,23 +2655,23 @@ msgstr "ในตัวเท่านั้น" + + #. Translators: This is a time format for a date in + #. long format +-#: js/ui/unlockDialog.js:384 ++#: js/ui/unlockDialog.js:414 + msgid "%A %B %-d" + msgstr "วัน%Aที่ %-d %B" + +-#: js/ui/unlockDialog.js:390 ++#: js/ui/unlockDialog.js:420 + msgid "Swipe up to unlock" + msgstr "รูดขึ้นเพื่อปลดล็อก" + +-#: js/ui/unlockDialog.js:391 ++#: js/ui/unlockDialog.js:421 + msgid "Click or press a key to unlock" + msgstr "คลิกหรือกดแป้นเพื่อปลดล็อก" + +-#: js/ui/unlockDialog.js:576 ++#: js/ui/unlockDialog.js:609 + msgid "Unlock Window" + msgstr "หน้าต่างปลดล็อก" + +-#: js/ui/unlockDialog.js:585 ++#: js/ui/unlockDialog.js:618 + msgid "Log in as another user" + msgstr "เข้าสู่ระบบในฐานะผู้ใช้อื่น" + +@@ -2624,19 +2699,19 @@ msgid "“%s” is ready" + msgstr "“%s” พร้อมแล้ว" + + #. Translators: This string should be shorter than 30 characters +-#: js/ui/windowManager.js:68 ++#: js/ui/windowManager.js:60 + msgid "Keep these display settings?" + msgstr "บันทึกการตั้งค่าการแสดงผลเหล่านี้ไว้หรือไม่?" + +-#: js/ui/windowManager.js:78 ++#: js/ui/windowManager.js:70 + msgid "Revert Settings" + msgstr "คืนการตั้งค่าเดิม" + +-#: js/ui/windowManager.js:83 ++#: js/ui/windowManager.js:75 + msgid "Keep Changes" + msgstr "เก็บเปลี่ยนแปลงไว้" + +-#: js/ui/windowManager.js:103 ++#: js/ui/windowManager.js:95 + #, javascript-format + msgid "Settings changes will revert in %d second" + msgid_plural "Settings changes will revert in %d seconds" +@@ -2644,98 +2719,98 @@ msgstr[0] "จะคืนค่าการตั้งค่าใน %d ว + + #. Translators: This represents the size of a window. The first number is + #. * the width of the window and the second is the height. +-#: js/ui/windowManager.js:500 ++#: js/ui/windowManager.js:492 + #, javascript-format + msgid "%d × %d" + msgstr "%d × %d" + + #. Translators: entry in the window right click menu. +-#: js/ui/windowMenu.js:28 ++#: js/ui/windowMenu.js:27 + msgctxt "window-menu" + msgid "Take Screenshot" + msgstr "ถ่ายภาพหน้าต่าง" + +-#: js/ui/windowMenu.js:40 ++#: js/ui/windowMenu.js:39 + msgid "Hide" + msgstr "ซ่อน" + +-#: js/ui/windowMenu.js:47 ++#: js/ui/windowMenu.js:46 + msgid "Restore" + msgstr "คืนขนาด" + +-#: js/ui/windowMenu.js:51 ++#: js/ui/windowMenu.js:50 + msgid "Maximize" + msgstr "ขยายแผ่" + +-#: js/ui/windowMenu.js:58 ++#: js/ui/windowMenu.js:57 + msgid "Move" + msgstr "ย้าย" + +-#: js/ui/windowMenu.js:78 ++#: js/ui/windowMenu.js:71 + msgid "Resize" + msgstr "ปรับขนาด" + +-#: js/ui/windowMenu.js:98 ++#: js/ui/windowMenu.js:85 + msgid "Always on Top" + msgstr "แสดงอยู่บนสุด" + +-#: js/ui/windowMenu.js:117 ++#: js/ui/windowMenu.js:104 + msgid "Always on Visible Workspace" + msgstr "แสดงบนพื้นที่ทำงานเสมอ" + +-#: js/ui/windowMenu.js:131 ++#: js/ui/windowMenu.js:118 + msgid "Move to Workspace Left" + msgstr "ย้ายไปยังพื้นที่ทำงานด้านซ้าย" + +-#: js/ui/windowMenu.js:137 ++#: js/ui/windowMenu.js:124 + msgid "Move to Workspace Right" + msgstr "ย้ายไปยังพื้นที่ทำงานด้านขวา" + +-#: js/ui/windowMenu.js:143 ++#: js/ui/windowMenu.js:130 + msgid "Move to Workspace Up" + msgstr "ย้ายไปยังพื้นที่ทำงานด้านบน" + +-#: js/ui/windowMenu.js:149 ++#: js/ui/windowMenu.js:136 + msgid "Move to Workspace Down" + msgstr "ย้ายไปยังพื้นที่ทำงานด้านล่าง" + +-#: js/ui/windowMenu.js:167 ++#: js/ui/windowMenu.js:154 + msgid "Move to Monitor Up" + msgstr "ย้ายไปยังจอภาพด้านบน" + +-#: js/ui/windowMenu.js:176 ++#: js/ui/windowMenu.js:163 + msgid "Move to Monitor Down" + msgstr "ย้ายไปยังจอภาพด้านล่าง" + +-#: js/ui/windowMenu.js:185 ++#: js/ui/windowMenu.js:172 + msgid "Move to Monitor Left" + msgstr "ย้ายไปยังจอภาพด้านซ้าย" + +-#: js/ui/windowMenu.js:194 ++#: js/ui/windowMenu.js:181 + msgid "Move to Monitor Right" + msgstr "ย้ายไปยังจอภาพด้านขวา" + +-#: js/ui/windowMenu.js:202 ++#: js/ui/windowMenu.js:189 + msgid "Close" + msgstr "ปิด" + +-#: src/main.c:512 subprojects/extensions-tool/src/main.c:336 ++#: src/main.c:515 subprojects/extensions-tool/src/main.c:336 + msgid "Print version" + msgstr "แสดงเลขรุ่น" + +-#: src/main.c:518 ++#: src/main.c:521 + msgid "Mode used by GDM for login screen" + msgstr "โหมดสำหรับให้ GDM เรียกใช้ในหน้าจอเข้าสู่ระบบ" + +-#: src/main.c:524 ++#: src/main.c:527 + msgid "Use a specific mode, e.g. “gdm” for login screen" + msgstr "ใช้โหมดเฉพาะ เช่น “gdm” สำหรับหน้าจอเข้าสู่ระบบ" + +-#: src/main.c:530 ++#: src/main.c:533 + msgid "List possible modes" + msgstr "แสดงโหมดทั้งหมดที่เป็นไปได้" + +-#: src/main.c:536 ++#: src/main.c:539 + msgid "Force animations to be enabled" + msgstr "บังคับให้ภาพเคลื่อนไหวเปิดใช้งาน" + +@@ -2834,24 +2909,24 @@ msgstr "รายละเอียดข้อผิดพลาด:" + msgid "Version %s" + msgstr "รุ่น %s" + +-#: subprojects/extensions-app/js/extensionsWindow.js:113 ++#: subprojects/extensions-app/js/extensionsWindow.js:108 + #, javascript-format + msgid "Remove “%s”?" + msgstr "ลบ “%s” หรือไม่?" + +-#: subprojects/extensions-app/js/extensionsWindow.js:114 ++#: subprojects/extensions-app/js/extensionsWindow.js:109 + msgid "If you remove the extension, you need to return to download it if you want to enable it again" + msgstr "ถ้าคุณลบส่วนขยายออก คุณจะต้องกลับไปดาวน์โหลดใหม่หากต้องการเปิดใช้อีกครั้ง" + +-#: subprojects/extensions-app/js/extensionsWindow.js:117 ++#: subprojects/extensions-app/js/extensionsWindow.js:112 + msgid "_Cancel" + msgstr "_ยกเลิก" + +-#: subprojects/extensions-app/js/extensionsWindow.js:118 ++#: subprojects/extensions-app/js/extensionsWindow.js:113 + msgid "_Remove" + msgstr "_ลบ" + +-#: subprojects/extensions-app/js/extensionsWindow.js:158 ++#: subprojects/extensions-app/js/extensionsWindow.js:153 + msgid "translator-credits" + msgstr "" + "Sira Nokyoongtong \n" +@@ -2859,16 +2934,12 @@ msgstr "" + "Atirut Wattanamongkol \n" + "Aefgh Threenine " + +-#: subprojects/extensions-app/js/extensionsWindow.js:203 ++#: subprojects/extensions-app/js/extensionsWindow.js:198 + #, javascript-format + msgid "%d extension will be updated on next login." + msgid_plural "%d extensions will be updated on next login." + msgstr[0] "ส่วนขยาย %d รายการจะถูกอัปเดตเมื่อเข้าระบบครั้งถัดไป" + +-#: subprojects/extensions-app/data/ui/extension-row.ui:13 +-msgid "Error Details" +-msgstr "รายละเอียดข้อผิดพลาด" +- + #: subprojects/extensions-app/data/ui/extension-row.ui:51 + msgid "Updates Details" + msgstr "รายละเอียดอัปเดต" +@@ -2909,53 +2980,61 @@ msgstr "เมนูหลัก" + msgid "Search extensions" + msgstr "ค้นหาส่วนขยาย" + +-#: subprojects/extensions-app/data/ui/extensions-window.ui:134 ++#: subprojects/extensions-app/data/ui/extensions-window.ui:123 ++msgid "_Log Out…" ++msgstr "_ออกจากระบบ…" ++ ++#: subprojects/extensions-app/data/ui/extensions-window.ui:131 + msgid "_Extensions" + msgstr "_ส่วนขยาย" + +-#: subprojects/extensions-app/data/ui/extensions-window.ui:139 ++#: subprojects/extensions-app/data/ui/extensions-window.ui:136 + msgid "More Information" + msgstr "ข้อมูลเพิ่มเติม" + +-#: subprojects/extensions-app/data/ui/extensions-window.ui:151 ++#: subprojects/extensions-app/data/ui/extensions-window.ui:148 + msgid "" + "Extensions can cause performance and stability issues. It is recommended to disable all extensions " + "if you experience problems with your system." + msgstr "" + "ส่วนขยายอาจทำให้เกิดปัญหาด้านประสิทธิภาพและความเสถียร ขอแนะนำให้ปิดใช้งานส่วนขยายหมดทุกตัวถ้าคุณพบปัญหากับระบบของคุณ" + +-#: subprojects/extensions-app/data/ui/extensions-window.ui:178 ++#: subprojects/extensions-app/data/ui/extensions-window.ui:175 + msgid "User Extensions" + msgstr "ส่วนขยายผู้ใช้" + +-#: subprojects/extensions-app/data/ui/extensions-window.ui:198 ++#: subprojects/extensions-app/data/ui/extensions-window.ui:184 + msgid "System Extensions" + msgstr "ส่วนขยายระบบ" + +-#: subprojects/extensions-app/data/ui/extensions-window.ui:233 ++#: subprojects/extensions-app/data/ui/extensions-window.ui:203 + msgid "Search Results" + msgstr "ผลการค้นหา" + +-#: subprojects/extensions-app/data/ui/extensions-window.ui:252 ++#: subprojects/extensions-app/data/ui/extensions-window.ui:217 + msgid "No Results Found" + msgstr "ไม่พบผลลัพธ์" + +-#: subprojects/extensions-app/data/ui/extensions-window.ui:253 ++#: subprojects/extensions-app/data/ui/extensions-window.ui:218 + msgid "Try a different search" + msgstr "โปรดลองค้นหาด้วยคำอื่น" + +-#: subprojects/extensions-app/data/ui/extensions-window.ui:264 ++#: subprojects/extensions-app/data/ui/extensions-window.ui:229 + msgid "No Installed Extensions" + msgstr "ไม่มีส่วนขยายที่ติดตั้งอยู่" + +-#: subprojects/extensions-app/data/ui/extensions-window.ui:265 ++#: subprojects/extensions-app/data/ui/extensions-window.ui:230 + msgid "" + "To find and add extensions, visit extensions.gnome.org." + msgstr "" + "เมื่อต้องการค้นหาและเพิ่มส่วนขยาย ให้เยี่ยมชม extensions.gnome.org." + +-#: subprojects/extensions-app/data/ui/extensions-window.ui:276 ++#: subprojects/extensions-app/data/ui/extensions-window.ui:240 ++msgid "Something’s gone wrong" ++msgstr "มีบางอย่างผิดปกติ" ++ ++#: subprojects/extensions-app/data/ui/extensions-window.ui:241 + msgid "" + "We’re very sorry, but it was not possible to get the list of installed extensions. Make sure you " + "are logged into GNOME and try again." +@@ -2963,27 +3042,27 @@ msgstr "" + "เราขออภัยอย่างที่สุด แต่เป็นไปไม่ได้ที่จะอ่านข้อมูลของรายชื่อส่วนขยายที่ติดตั้งอยู่ ให้ตรวจสอบให้แน่ใจว่าคุณเข้าระบบ GNOME " + "แล้วและลองอีกครั้ง" + +-#: subprojects/extensions-app/data/ui/help-overlay.ui:9 ++#: subprojects/extensions-app/data/ui/shortcuts-dialog.ui:6 + msgctxt "shortcut window" + msgid "General" + msgstr "ทั่วไป" + +-#: subprojects/extensions-app/data/ui/help-overlay.ui:12 ++#: subprojects/extensions-app/data/ui/shortcuts-dialog.ui:9 + msgctxt "shortcut window" + msgid "Open Menu" + msgstr "เปิดเมนู" + +-#: subprojects/extensions-app/data/ui/help-overlay.ui:18 ++#: subprojects/extensions-app/data/ui/shortcuts-dialog.ui:15 + msgctxt "shortcut window" + msgid "Toggle Search" + msgstr "เปิด/ปิดส่วนค้นหา" + +-#: subprojects/extensions-app/data/ui/help-overlay.ui:24 ++#: subprojects/extensions-app/data/ui/shortcuts-dialog.ui:21 + msgctxt "shortcut window" + msgid "Show Shortcuts" + msgstr "แสดงปุ่มลัด" + +-#: subprojects/extensions-app/data/ui/help-overlay.ui:30 ++#: subprojects/extensions-app/data/ui/shortcuts-dialog.ui:27 + msgctxt "shortcut window" + msgid "Quit" + msgstr "ออก" +@@ -3021,6 +3100,7 @@ msgid "Description" + msgstr "คำอธิบาย" + + #: subprojects/extensions-tool/src/command-create.c:416 ++#, c-format + msgid "" + "UUID is a globally-unique identifier for your extension.\n" + "This should be in the format of an email address (clicktofocus@janedoe.example.com)\n" +@@ -3029,6 +3109,7 @@ msgstr "" + "ข้อมูลนี้ควรอยู่ในรูปแบบของที่อยู่อีเมล (clicktofocus@janedoe.example.com)\n" + + #: subprojects/extensions-tool/src/command-create.c:443 ++#, c-format + msgid "Choose one of the available templates:\n" + msgstr "เลือกแม่แบบตัวใดตัวหนึ่งจากที่มีอยู่:\n" + +@@ -3137,6 +3218,7 @@ msgstr "เปิดใช้งานส่วนขยาย" + + #: subprojects/extensions-tool/src/command-info.c:50 subprojects/extensions-tool/src/command-list.c:66 + #: subprojects/extensions-tool/src/main.c:150 ++#, c-format + msgid "Failed to connect to GNOME Shell\n" + msgstr "ไม่สามารถเชื่อมต่อกับ GNOME Shell ได้\n" + +@@ -3210,6 +3292,7 @@ msgid "List installed extensions" + msgstr "แสดงรายชื่อส่วนขยายที่ติดตั้งอยู่" + + #: subprojects/extensions-tool/src/command-pack.c:444 ++#: subprojects/extensions-tool/src/command-upload.c:427 + msgid "FILE" + msgstr "FILE" + +@@ -3273,6 +3356,7 @@ msgid "Reset an extension" + msgstr "ตั้งค่าส่วนขยายใหม่" + + #: subprojects/extensions-tool/src/command-uninstall.c:49 ++#, c-format + msgid "Cannot uninstall system extensions\n" + msgstr "ไม่สามารถถอนการติดตั้งส่วนขยายระบบได้\n" + +@@ -3285,6 +3369,60 @@ msgstr "ถอนการติดตั้ง “%s” ไม่สำเร + msgid "Uninstall an extension" + msgstr "ถอนการติดตั้งส่วนขยาย" + ++#: subprojects/extensions-tool/src/command-upload.c:226 ++#, c-format ++msgid "Login to extensions.gnome.org\n" ++msgstr "เข้าสู่ระบบ extensions.gnome.org\n" ++ ++#: subprojects/extensions-tool/src/command-upload.c:256 ++#, c-format ++msgid "Warning! Password will be echoed" ++msgstr "คำเตือน! รหัสผ่านจะถูกแสดงขณะพิมพ์" ++ ++#: subprojects/extensions-tool/src/command-upload.c:419 ++msgid "USERNAME" ++msgstr "ชื่อผู้ใช้" ++ ++#: subprojects/extensions-tool/src/command-upload.c:421 ++msgid "Username to log into https://extensions.gnome.org" ++msgstr "ชื่อผู้ใช้สำหรับเข้าสู่ระบบ https://extensions.gnome.org" ++ ++#: subprojects/extensions-tool/src/command-upload.c:423 ++msgid "PASSWORD" ++msgstr "รหัสผ่าน" ++ ++#: subprojects/extensions-tool/src/command-upload.c:425 ++msgid "Password to log into https://extensions.gnome.org" ++msgstr "รหัสผ่านสำหรับเข้าสู่ระบบ https://extensions.gnome.org" ++ ++#: subprojects/extensions-tool/src/command-upload.c:429 ++msgid "Read https://extensions.gnome.org password from file, use \"-\" for stdin" ++msgstr "อ่านรหัสผ่านของ https://extensions.gnome.org จากไฟล์ โดยใช้ \"-\" เพื่ออ่านจาก stdin" ++ ++#: subprojects/extensions-tool/src/command-upload.c:432 ++msgid "Accept the terms of service at https://extensions.gnome.org/upload/" ++msgstr "ยอมรับข้อกำหนดการให้บริการที่ https://extensions.gnome.org/upload/" ++ ++#: subprojects/extensions-tool/src/command-upload.c:434 ++msgid "FILE…" ++msgstr "ไฟล์…" ++ ++#: subprojects/extensions-tool/src/command-upload.c:443 ++msgid "Upload new extension versions" ++msgstr "อัปโหลดรุ่นส่วนขยายใหม่" ++ ++#: subprojects/extensions-tool/src/command-upload.c:461 ++msgid "Only one of --password and --password-file can be used" ++msgstr "สามารถใช้ได้เพียงตัวเลือกเดียวระหว่าง --password และ --password-file" ++ ++#: subprojects/extensions-tool/src/command-upload.c:467 ++msgid "You must accept the terms of service to upload extensions" ++msgstr "คุณต้องยอมรับข้อกำหนดการให้บริการเพื่ออัปโหลดส่วนขยาย" ++ ++#: subprojects/extensions-tool/src/command-upload.c:473 ++msgid "No files given" ++msgstr "ไม่ได้ระบุไฟล์ไว้" ++ + #: subprojects/extensions-tool/src/main.c:76 + msgid "Do not print error messages" + msgstr "ไม่ต้องพิมพ์ข้อความแสดงข้อผิดพลาด" +@@ -3445,6 +3583,34 @@ msgstr[0] "อินพุต %u ช่อง" + msgid "System Sounds" + msgstr "เสียงของระบบ" + ++#~ msgid "GNOME Shell" ++#~ msgstr "GNOME Shell" ++ ++#~ msgid "Window management and application launching" ++#~ msgstr "การจัดการหน้าต่างและการเรียกใช้แอปพลิเคชัน" ++ ++#~ msgid "" ++#~ "We’re very sorry, but there’s been a problem: the settings for this extension can’t be " ++#~ "displayed. We recommend that you report the issue to the extension authors." ++#~ msgstr "" ++#~ "เราขออภัยอย่างที่สุด แต่มีปัญหาเกิดขึ้นคือ ไม่สามารถแสดงผลการตั้งค่าสำหรับส่วนขยายนี้ได้ " ++#~ "เราขอแนะนำให้คุณรายงานปัญหานั้นแก่ผู้จัดทำส่วนขยาย" ++ ++#~ msgid "Technical Details" ++#~ msgstr "รายละเอียดทางเทคนิค" ++ ++#~ msgid "Homepage" ++#~ msgstr "หน้าแรก" ++ ++#~ msgid "Visit extension homepage" ++#~ msgstr "เยี่ยมชมหน้าแรกของส่วนขยาย" ++ ++#~ msgid "%H∶%M" ++#~ msgstr "%H∶%M น." ++ ++#~ msgid "Screenshot" ++#~ msgstr "ภาพหน้าจอ" ++ + #~ msgid "Could not parse command:" + #~ msgstr "ไม่สามารถแจงคำสั่ง:" + +@@ -3700,10 +3866,6 @@ msgstr "เสียงของระบบ" + #~ msgid "Add to Favorites" + #~ msgstr "เพิ่มเข้าในรายการโปรด" + +-#~ msgctxt "event list time" +-#~ msgid "%H:%M" +-#~ msgstr "%H:%M" +- + #~ msgctxt "list sunday" + #~ msgid "Su" + #~ msgstr "อา." diff --git a/debian/patches/appDisplay-Only-create-default-folders-on-the-first-start.patch b/debian/patches/appDisplay-Only-create-default-folders-on-the-first-start.patch new file mode 100644 index 000000000..481f75af1 --- /dev/null +++ b/debian/patches/appDisplay-Only-create-default-folders-on-the-first-start.patch @@ -0,0 +1,32 @@ +From: Sebastian Keller +Date: Sat, 24 Jan 2026 18:15:43 +0100 +Subject: appDisplay: Only create default folders on the first start + +If all folders were removed, after a session restart the default folders +would have been recreated again, effectively preventing users from +using the app grid without folders. + +Avoid this problem by only creating the default folders if the +folder-children setting has never been modified before. + +Related: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8713 +Part-of: +(cherry picked from commit 889c1a444fcfd0588716528b8ee7dd858a610694) +Origin: upstream, 49.4, commit:b0d396c8238b15a30b3a3321bbb257a913d6c63f +--- + js/ui/appDisplay.js | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/js/ui/appDisplay.js b/js/ui/appDisplay.js +index b473848..71cc36a 100644 +--- a/js/ui/appDisplay.js ++++ b/js/ui/appDisplay.js +@@ -1403,7 +1403,7 @@ class AppDisplay extends BaseAppView { + } + + _ensureDefaultFolders() { +- if (this._folderSettings.get_strv('folder-children').length > 0) ++ if (this._folderSettings.get_user_value('folder-children') !== null) + return; + + const appSys = Shell.AppSystem.get_default(); diff --git a/debian/patches/gdm-loginDialog-Reset-the-greeter-proxy-on-connection-clo.patch b/debian/patches/gdm-loginDialog-Reset-the-greeter-proxy-on-connection-clo.patch new file mode 100644 index 000000000..c3159b715 --- /dev/null +++ b/debian/patches/gdm-loginDialog-Reset-the-greeter-proxy-on-connection-clo.patch @@ -0,0 +1,44 @@ +From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= +Date: Wed, 17 Sep 2025 18:26:17 +0200 +Subject: gdm/loginDialog: Reset the greeter proxy on connection closed + +If gdm fails to start the display session the greeter proxy we are using +gets disconnected, however since commit 56ea95f2 we are now preserving +the greeter instance, and this will eventually lead to using an instance +of a disconnected proxy. + +This eventually implies that after a login failure, we would never get +the `::session-opened` signal that actually triggers the session start. + +And thus, even the user has properly authenticated, gdm will stick to +the authentication page. + +So, instead of reverting such commit (that isn't wrong per se), consume +the greeter proxy connection `::closed` signal and use it to +re-initialize the greeter instance. + +Part-of: +(cherry picked from commit ed6531fa79a67309f786893321c4b7af23f9d651) +Origin: upstream, 49.4, commit:d70564057029ccb4f9f175d73ec0920337d6e856 +--- + js/gdm/loginDialog.js | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js +index 3f2f512..5aca896 100644 +--- a/js/gdm/loginDialog.js ++++ b/js/gdm/loginDialog.js +@@ -1051,6 +1051,13 @@ export const LoginDialog = GObject.registerClass({ + + this._greeter = this._gdmClient.get_greeter_sync(null); + ++ this._greeter.get_connection().connectObject('closed', connection => { ++ connection.disconnectObject(this); ++ this._greeter.disconnectObject(this); ++ this._greeter = null; ++ this._ensureGreeterProxy(); ++ }, this); ++ + this._greeter.connectObject( + 'default-session-name-changed', this._onDefaultSessionChanged.bind(this), + 'session-opened', this._onSessionOpened.bind(this), diff --git a/debian/patches/gdm-util-Clear-the-request-if-user-verifier-connection-is.patch b/debian/patches/gdm-util-Clear-the-request-if-user-verifier-connection-is.patch new file mode 100644 index 000000000..8c2bdf581 --- /dev/null +++ b/debian/patches/gdm-util-Clear-the-request-if-user-verifier-connection-is.patch @@ -0,0 +1,45 @@ +From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= +Date: Wed, 17 Sep 2025 19:04:46 +0200 +Subject: gdm/util: Clear the request if user verifier connection is closed + +Similarly to previous commit, in case the user verifier connection is +closed we should just clear the user verifier instance, since starting +from this point is going to be just invalid. + +Part-of: +(cherry picked from commit 91a736a09ed9f5e2d11c733535b479fbf4f4fddf) +Origin: upstream, 49.4, commit:704f90b68de8000387a2cc38f25fc83e08b66f4f +--- + js/gdm/util.js | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/js/gdm/util.js b/js/gdm/util.js +index 8cd18f0..f75c581 100644 +--- a/js/gdm/util.js ++++ b/js/gdm/util.js +@@ -200,6 +200,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { + _clearUserVerifier() { + if (this._userVerifier) { + this._disconnectSignals(); ++ this._userVerifier.get_connection().disconnectObject(this); + this._userVerifier.run_dispose(); + this._userVerifier = null; + if (this._userVerifierChoiceList) { +@@ -508,6 +509,8 @@ export class ShellUserVerifier extends Signals.EventEmitter { + this._clearUserVerifier(); + this._userVerifier = await this._client.open_reauthentication_channel( + userName, this._cancellable); ++ this._userVerifier.get_connection().connectObject('closed', ++ () => this.clear(), this); + } catch (e) { + if (e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) + return; +@@ -540,6 +543,8 @@ export class ShellUserVerifier extends Signals.EventEmitter { + this._clearUserVerifier(); + this._userVerifier = + await this._client.get_user_verifier(this._cancellable); ++ this._userVerifier.get_connection().connectObject('closed', ++ () => this.clear(), this); + } catch (e) { + if (e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) + return; diff --git a/debian/patches/gdm-util-Do-not-run-dispose-on-user-verifier.patch b/debian/patches/gdm-util-Do-not-run-dispose-on-user-verifier.patch new file mode 100644 index 000000000..ad682b35d --- /dev/null +++ b/debian/patches/gdm-util-Do-not-run-dispose-on-user-verifier.patch @@ -0,0 +1,39 @@ +From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= +Date: Wed, 17 Sep 2025 19:06:55 +0200 +Subject: gdm/util: Do not run dispose on user verifier + +This is not a good habit anywhere and especially in JS code, I assume +the rationale for this was to ensure that cached instances of the proxy +were cleared, but this did not work properly (as it happened on +finalize), and it would still require [1]. + +So let's just avoid this and assume that the getters just return what we +expect. + +[1] https://gitlab.gnome.org/GNOME/gdm/-/merge_requests/321 + +Part-of: +(cherry picked from commit 7029cf41f1265a50009c237045aa36d73be1165b) +Origin: upstream, 49.4, commit:00df421871ceb5d2f380408447d25a1bd2e632d2 +--- + js/gdm/util.js | 6 +----- + 1 file changed, 1 insertion(+), 5 deletions(-) + +diff --git a/js/gdm/util.js b/js/gdm/util.js +index f75c581..da05ecf 100644 +--- a/js/gdm/util.js ++++ b/js/gdm/util.js +@@ -201,12 +201,8 @@ export class ShellUserVerifier extends Signals.EventEmitter { + if (this._userVerifier) { + this._disconnectSignals(); + this._userVerifier.get_connection().disconnectObject(this); +- this._userVerifier.run_dispose(); + this._userVerifier = null; +- if (this._userVerifierChoiceList) { +- this._userVerifierChoiceList.run_dispose(); +- this._userVerifierChoiceList = null; +- } ++ this._userVerifierChoiceList = null; + } + } + diff --git a/debian/patches/gdm-util-Set-minimum-display-time-for-authentication-mess.patch b/debian/patches/gdm-util-Set-minimum-display-time-for-authentication-mess.patch new file mode 100644 index 000000000..20084d214 --- /dev/null +++ b/debian/patches/gdm-util-Set-minimum-display-time-for-authentication-mess.patch @@ -0,0 +1,42 @@ +From: Joan Torres Lopez +Date: Wed, 28 Jan 2026 18:01:26 +0100 +Subject: gdm/util: Set minimum display time for authentication messages +MIME-Version: 1.0 +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: 8bit + +Short messages like "PIN locked" were previously displayed for only +480ms (10 chars × 48ms), making them impossible to read. Ensure all +messages are shown for at least 2 seconds. + +Part-of: +(cherry picked from commit 72073e008f35f197201e6c38ab506fbe5973fbeb) +Origin: upstream, 49.4, commit:27e4e1743ae81925e4a33b61616e8211a68e3093 +--- + js/gdm/util.js | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/js/gdm/util.js b/js/gdm/util.js +index c45579a..8cd18f0 100644 +--- a/js/gdm/util.js ++++ b/js/gdm/util.js +@@ -43,7 +43,10 @@ export const LOGO_KEY = 'logo'; + export const DISABLE_USER_LIST_KEY = 'disable-user-list'; + + // Give user 48ms to read each character of a PAM message ++// or 2 seconds, whichever is longer + const USER_READ_TIME = 48; ++const USER_READ_TIME_MIN = 2000; ++ + const FINGERPRINT_SERVICE_PROXY_TIMEOUT = 5000; + const FINGERPRINT_ERROR_TIMEOUT_WAIT = 15; + +@@ -250,7 +253,7 @@ export class ShellUserVerifier extends Signals.EventEmitter { + return 0; + + // We probably could be smarter here +- return message.length * USER_READ_TIME; ++ return Math.max(message.length * USER_READ_TIME, USER_READ_TIME_MIN); + } + + finishMessageQueue() { diff --git a/debian/patches/hotplut-sniffer-Use-one-shot-idle-timeout-functions.patch b/debian/patches/hotplut-sniffer-Use-one-shot-idle-timeout-functions.patch new file mode 100644 index 000000000..b4f0c8f73 --- /dev/null +++ b/debian/patches/hotplut-sniffer-Use-one-shot-idle-timeout-functions.patch @@ -0,0 +1,92 @@ +From: =?utf-8?q?Florian_M=C3=BCllner?= +Date: Thu, 29 Jan 2026 14:29:58 +0100 +Subject: hotplut-sniffer: Use one-shot idle/timeout functions + +GLib added one-shot variants of the idle/timeout functions a while ago. + +While they don't save a lot of code, they serve as a clear marker that +the callback is only invoked once. + +Part-of: +(cherry picked from commit 1b1d22b5da2aea45f3125c91b72fc636a736abf1) +Origin: upstream, 49.4, commit:7d3ec9cc45186cbcd6a7bbe15ac4d98120549657 +--- + src/hotplug-sniffer/hotplug-sniffer.c | 12 +++++------- + src/hotplug-sniffer/shell-mime-sniffer.c | 8 +++----- + 2 files changed, 8 insertions(+), 12 deletions(-) + +diff --git a/src/hotplug-sniffer/hotplug-sniffer.c b/src/hotplug-sniffer/hotplug-sniffer.c +index 4b70ec7..9291fc2 100644 +--- a/src/hotplug-sniffer/hotplug-sniffer.c ++++ b/src/hotplug-sniffer/hotplug-sniffer.c +@@ -43,15 +43,13 @@ static GDBusNodeInfo *introspection_data = NULL; + static GMainLoop *loop = NULL; + static guint autoquit_id = 0; + +-static gboolean ++static void + autoquit_timeout_cb (gpointer _unused) + { + print_debug ("Timeout reached, quitting..."); + + autoquit_id = 0; + g_main_loop_quit (loop); +- +- return FALSE; + } + + static void +@@ -69,9 +67,9 @@ ensure_autoquit_on (void) + if (g_getenv ("HOTPLUG_SNIFFER_PERSIST") != NULL) + return; + +- autoquit_id = +- g_timeout_add_seconds (AUTOQUIT_TIMEOUT, +- autoquit_timeout_cb, NULL); ++ autoquit_id = ++ g_timeout_add_seconds_once (AUTOQUIT_TIMEOUT, ++ autoquit_timeout_cb, NULL); + g_source_set_name_by_id (autoquit_id, "[gnome-shell] autoquit_timeout_cb"); + } + +@@ -139,7 +137,7 @@ handle_sniff_uri (InvocationData *data) + + ensure_autoquit_off (); + +- g_variant_get (data->parameters, ++ g_variant_get (data->parameters, + "(&s)", &uri, + NULL); + file = g_file_new_for_uri (uri); +diff --git a/src/hotplug-sniffer/shell-mime-sniffer.c b/src/hotplug-sniffer/shell-mime-sniffer.c +index 724a204..b4d6d43 100644 +--- a/src/hotplug-sniffer/shell-mime-sniffer.c ++++ b/src/hotplug-sniffer/shell-mime-sniffer.c +@@ -439,15 +439,13 @@ query_info_async_ready_cb (GObject *source, + deep_count_start (self); + } + +-static gboolean ++static void + watchdog_timeout_reached_cb (gpointer user_data) + { + ShellMimeSniffer *self = user_data; + + self->watchdog_id = 0; + g_cancellable_cancel (self->cancellable); +- +- return FALSE; + } + + static void +@@ -565,8 +563,8 @@ shell_mime_sniffer_sniff_async (ShellMimeSniffer *self, + callback, user_data); + + self->watchdog_id = +- g_timeout_add (WATCHDOG_TIMEOUT, +- watchdog_timeout_reached_cb, self); ++ g_timeout_add_once (WATCHDOG_TIMEOUT, ++ watchdog_timeout_reached_cb, self); + g_source_set_name_by_id (self->watchdog_id, "[gnome-shell] watchdog_timeout_reached_cb"); + + start_loading_file (self); diff --git a/debian/patches/inputMethod-Honor-the-HIDDEN_TEXT-hint-of-IBusInputHint.patch b/debian/patches/inputMethod-Honor-the-HIDDEN_TEXT-hint-of-IBusInputHint.patch new file mode 100644 index 000000000..a6e785670 --- /dev/null +++ b/debian/patches/inputMethod-Honor-the-HIDDEN_TEXT-hint-of-IBusInputHint.patch @@ -0,0 +1,29 @@ +From: Joan Torres Lopez +Date: Thu, 29 Jan 2026 14:04:40 +0100 +Subject: inputMethod: Honor the HIDDEN_TEXT hint of IBusInputHint + +Makes the pre-edit text hidden with a "_". + +This hint was added in IBus 1.5.34, although if IBus doesn't support it, +it will silently fallback to no-op which is fine. + +Part-of: +(cherry picked from commit a39035fda4e1cf487b83483e2d4fe41a830d7fea) +Origin: upstream, 49.4, commit:9558a6cc80cf4c5b187cd77c220acedc70902dff +--- + js/misc/inputMethod.js | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/js/misc/inputMethod.js b/js/misc/inputMethod.js +index ee77166..caa1067 100644 +--- a/js/misc/inputMethod.js ++++ b/js/misc/inputMethod.js +@@ -292,6 +292,8 @@ export const InputMethod = GObject.registerClass({ + ibusHints |= IBus.InputHints.UPPERCASE_WORDS; + if (hints & Clutter.InputContentHintFlags.SENSITIVE_DATA) + ibusHints |= IBus.InputHints.PRIVATE; ++ if (hints & Clutter.InputContentHintFlags.HIDDEN_TEXT) ++ ibusHints |= IBus.InputHints.HIDDEN_TEXT; + + this._hints = ibusHints; + if (this._context) diff --git a/debian/patches/main-Only-call-gjs_dumpstack-on-warnings-from-main-thread.patch b/debian/patches/main-Only-call-gjs_dumpstack-on-warnings-from-main-thread.patch new file mode 100644 index 000000000..55f435262 --- /dev/null +++ b/debian/patches/main-Only-call-gjs_dumpstack-on-warnings-from-main-thread.patch @@ -0,0 +1,48 @@ +From: Sebastian Keller +Date: Wed, 21 Jan 2026 22:54:39 +0100 +Subject: main: Only call gjs_dumpstack() on warnings from main thread + +The mozjs code called by gjs_dumpstack() does not appear to be thread +safe and was sometimes resulting in crashes when triggered by error +messages from threads other than the main thread. And even when not +crashing, such a backtrace can only be misleading since only the main +thread is executing JS code. + +Part-of: +(cherry picked from commit 23e3e7970f1ef316c0a5bce2dea4872cf1ca5750) +Origin: upstream, 49.4, commit:c481543906d4f843f8aec26029a760ab82e213ef +--- + src/main.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/src/main.c b/src/main.c +index 99eca3e..62a284b 100644 +--- a/src/main.c ++++ b/src/main.c +@@ -52,6 +52,7 @@ enum { + }; + static int _shell_debug; + static gboolean _tracked_signals[NSIG] = { 0 }; ++static GThread *main_thread; + + static void + shell_dbus_acquire_name (GDBusProxy *bus, +@@ -384,7 +385,8 @@ default_log_writer (GLogLevelFlags log_level, + + if ((_shell_debug & SHELL_DEBUG_BACKTRACE_WARNINGS) && + ((log_level & G_LOG_LEVEL_CRITICAL) || +- (log_level & G_LOG_LEVEL_WARNING))) ++ (log_level & G_LOG_LEVEL_WARNING)) && ++ g_thread_self () == main_thread) + { + const char *log_domain = NULL; + +@@ -611,6 +613,8 @@ main (int argc, char **argv) + g_setenv ("GJS_DEBUG_OUTPUT", "stderr", TRUE); + g_setenv ("GJS_DEBUG_TOPICS", "JS ERROR;JS LOG", TRUE); + ++ main_thread = g_thread_self (); ++ + context = meta_create_context (WM_NAME); + meta_context_add_option_entries (context, gnome_shell_options, + GETTEXT_PACKAGE); diff --git a/debian/patches/quickSettingsMenu-Add-actor-group-to-focus-manager.patch b/debian/patches/quickSettingsMenu-Add-actor-group-to-focus-manager.patch new file mode 100644 index 000000000..ff74a520e --- /dev/null +++ b/debian/patches/quickSettingsMenu-Add-actor-group-to-focus-manager.patch @@ -0,0 +1,27 @@ +From: Ramez Medhat +Date: Wed, 21 Jan 2026 17:28:22 +0200 +Subject: quickSettingsMenu: Add actor group to focus manager + +This allows focus to menu item using the tab key to match the behaviour in other menus. + +Part-of: +(cherry picked from commit 92eebde81cebfc25bdd4ef5ec1815f59598ba6bd) +Bug: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8904 +Origin: upstream, 49.4, commit:cf368daa85028bac2e3b636aef7b9445973d3615 +--- + js/ui/quickSettings.js | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/js/ui/quickSettings.js b/js/ui/quickSettings.js +index 0512948..ed6c471 100644 +--- a/js/ui/quickSettings.js ++++ b/js/ui/quickSettings.js +@@ -734,6 +734,8 @@ export const QuickSettingsMenu = class extends PopupMenu.PopupMenu { + this.actor.add_child(this._boxPointer); + this.actor._delegate = this; + ++ global.focus_manager.add_group(this.actor); ++ + this.connect('menu-closed', () => this.actor.hide()); + + Main.layoutManager.connectObject('system-modal-opened', diff --git a/debian/patches/series b/debian/patches/series index 2b0235c4d..7eb9182d1 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -1,4 +1,5 @@ Revert-main-Register-session-with-GDM-on-startup.patch +Update-Thai-translation.patch libgvc/mixer-control-Fix-typos-and-remove-trailing-whitespace.patch libgvc/mixer-control-Use-automatic-cleanup-in-match_stream_with_.patch libgvc/mixer-control-Print-port-names-with-profiles.patch @@ -17,9 +18,28 @@ libgvc/mixer-control-Reset-stream-id-s-on-UI-devices.patch libgvc/mixer-control-Clear-stream-ids-from-UI-devices-when-BT-st.patch libgvc/mixer-control-Check-for-invalid-input.patch libgvc/mixer-control-Simplify-device-lookup.patch +Update-Czech-translation.patch +st-spinner-content-Fix-CoglTexture-leak.patch +appDisplay-Only-create-default-folders-on-the-first-start.patch +quickSettingsMenu-Add-actor-group-to-focus-manager.patch +gdm-util-Set-minimum-display-time-for-authentication-mess.patch +shell-Use-one-shot-idle-timeout-functions.patch +st-Use-one-shot-idle-timeout-functions.patch +tray-Use-one-shot-idle-timeout-functions.patch +hotplut-sniffer-Use-one-shot-idle-timeout-functions.patch +gdm-loginDialog-Reset-the-greeter-proxy-on-connection-clo.patch +gdm-util-Clear-the-request-if-user-verifier-connection-is.patch +gdm-util-Do-not-run-dispose-on-user-verifier.patch +style-Adjust-padding-for-close-button-in-message-list.patch +inputMethod-Honor-the-HIDDEN_TEXT-hint-of-IBusInputHint.patch +st-password-entry-Update-input-hints-when-toggling-passwo.patch +main-Only-call-gjs_dumpstack-on-warnings-from-main-thread.patch +swipeTracker-Handle-invalid-position-when-finding-previou.patch libgvc/mixer-control-Check-whether-we-are-handling-new-device-in.patch libgvc/mixer-control-Don-t-leak-ui-device.patch libgvc/mixer-control-Document-that-add_stream-is-transfer-full.patch +Update-Greek-translation.patch +Update-Greek-translation-1.patch shell-app-Warn-instead-of-crashing-if-disposed-before-sta.patch debian/Revert-tests-Fail-on-warnings-too.patch debian/data-Add-im-config.desktop-to-System-folder.patch diff --git a/debian/patches/shell-Use-one-shot-idle-timeout-functions.patch b/debian/patches/shell-Use-one-shot-idle-timeout-functions.patch new file mode 100644 index 000000000..bb3e5e09d --- /dev/null +++ b/debian/patches/shell-Use-one-shot-idle-timeout-functions.patch @@ -0,0 +1,205 @@ +From: =?utf-8?q?Florian_M=C3=BCllner?= +Date: Fri, 31 Oct 2025 17:57:20 +0100 +Subject: shell: Use one-shot idle/timeout functions + +GLib added one-shot variants of the idle/timeout functions a while ago. + +While they don't save a lot of code, they serve as a clear marker that +the callback is only invoked once. + +Part-of: +(cherry picked from commit 3a1d28c866e1efba695f4d9b724f7e1c732d254f) +Origin: upstream, 49.4, commit:0140ca4f29ba3834fd9a5b5699a131a0857a4ccd +--- + src/shell-app-cache.c | 10 ++++------ + src/shell-app-usage.c | 10 +++++----- + src/shell-edge-drag-gesture.c | 7 +++---- + src/shell-perf-helper.c | 6 ++---- + src/shell-polkit-authentication-agent.c | 6 ++---- + 5 files changed, 16 insertions(+), 23 deletions(-) + +diff --git a/src/shell-app-cache.c b/src/shell-app-cache.c +index 484e024..31c28fc 100644 +--- a/src/shell-app-cache.c ++++ b/src/shell-app-cache.c +@@ -194,7 +194,7 @@ apply_update_cb (GObject *object, + cache_state_free (state); + } + +-static gboolean ++static void + shell_app_cache_do_update (gpointer user_data) + { + ShellAppCache *cache = user_data; +@@ -213,8 +213,6 @@ shell_app_cache_do_update (gpointer user_data) + task = g_task_new (cache, cache->cancellable, apply_update_cb, NULL); + g_task_set_source_tag (task, shell_app_cache_do_update); + g_task_run_in_thread (task, shell_app_cache_worker); +- +- return G_SOURCE_REMOVE; + } + + static void +@@ -225,9 +223,9 @@ shell_app_cache_queue_update (ShellAppCache *self) + if (self->queued_update != 0) + g_source_remove (self->queued_update); + +- self->queued_update = g_timeout_add_seconds (DEFAULT_TIMEOUT_SECONDS, +- shell_app_cache_do_update, +- self); ++ self->queued_update = g_timeout_add_seconds_once (DEFAULT_TIMEOUT_SECONDS, ++ shell_app_cache_do_update, ++ self); + } + + static void +diff --git a/src/shell-app-usage.c b/src/shell-app-usage.c +index 9e57a91..a6edc27 100644 +--- a/src/shell-app-usage.c ++++ b/src/shell-app-usage.c +@@ -108,7 +108,7 @@ static void on_session_status_changed (GDBusProxy *proxy, guint status, ShellApp + static void on_focus_app_changed (ShellWindowTracker *tracker, GParamSpec *spec, ShellAppUsage *self); + static void ensure_queued_save (ShellAppUsage *self); + +-static gboolean idle_save_application_usage (gpointer data); ++static void idle_save_application_usage (gpointer data); + + static void restore_from_file (ShellAppUsage *self); + +@@ -426,7 +426,8 @@ ensure_queued_save (ShellAppUsage *self) + { + if (self->save_id != 0) + return; +- self->save_id = g_timeout_add_seconds (SAVE_APPS_TIMEOUT_SECONDS, idle_save_application_usage, self); ++ self->save_id = g_timeout_add_seconds_once (SAVE_APPS_TIMEOUT_SECONDS, ++ idle_save_application_usage, self); + g_source_set_name_by_id (self->save_id, "[gnome-shell] idle_save_application_usage"); + } + +@@ -526,7 +527,7 @@ write_attribute_double (GDataOutputStream *stream, + } + + /* Save app data lists to file */ +-static gboolean ++static void + idle_save_application_usage (gpointer data) + { + ShellAppUsage *self = SHELL_APP_USAGE (data); +@@ -546,7 +547,7 @@ idle_save_application_usage (gpointer data) + { + g_debug ("Could not save applications usage data: %s", error->message); + g_error_free (error); +- return FALSE; ++ return; + } + buffered_output = g_buffered_output_stream_new (G_OUTPUT_STREAM (output)); + g_object_unref (output); +@@ -594,7 +595,6 @@ out: + g_debug ("Could not save applications usage data: %s", error->message); + g_error_free (error); + } +- return FALSE; + } + + static void +diff --git a/src/shell-edge-drag-gesture.c b/src/shell-edge-drag-gesture.c +index f4f9732..f2f4b65 100644 +--- a/src/shell-edge-drag-gesture.c ++++ b/src/shell-edge-drag-gesture.c +@@ -127,7 +127,7 @@ exceeds_cancel_threshold (ShellEdgeDragGesture *self, + clutter_gesture_get_point_coords_abs (CLUTTER_GESTURE (self), + point, + &latest_coords); +- ++ + graphene_point_distance (&latest_coords, &begin_coords, &distance_x, &distance_y); + + switch (self->side) +@@ -194,7 +194,7 @@ shell_edge_drag_gesture_should_handle_sequence (ClutterGesture *gesture, + return FALSE; + } + +-static gboolean ++static void + on_cancel_timeout (gpointer data) + { + ShellEdgeDragGesture *self = data; +@@ -203,7 +203,6 @@ on_cancel_timeout (gpointer data) + clutter_gesture_set_state (CLUTTER_GESTURE (self), CLUTTER_GESTURE_STATE_CANCELLED); + + self->cancel_timeout_id = 0; +- return G_SOURCE_REMOVE; + } + + static void +@@ -223,7 +222,7 @@ shell_edge_drag_gesture_point_began (ClutterGesture *gesture, + self->cancel_timeout_point = point; + + g_assert (self->cancel_timeout_id == 0); +- self->cancel_timeout_id = g_timeout_add (CANCEL_TIMEOUT_MS, on_cancel_timeout, self); ++ self->cancel_timeout_id = g_timeout_add_once (CANCEL_TIMEOUT_MS, on_cancel_timeout, self); + } + + static void +diff --git a/src/shell-perf-helper.c b/src/shell-perf-helper.c +index db36e72..613fc1c 100644 +--- a/src/shell-perf-helper.c ++++ b/src/shell-perf-helper.c +@@ -88,7 +88,7 @@ static void destroy_windows (PerfHelperApp *app); + static void finish_wait_windows (PerfHelperApp *app); + static void check_finish_wait_windows (PerfHelperApp *app); + +-static gboolean ++static void + on_timeout (gpointer data) + { + PerfHelperApp *app = data; +@@ -96,8 +96,6 @@ on_timeout (gpointer data) + + destroy_windows (app); + g_application_quit (G_APPLICATION (app)); +- +- return FALSE; + } + + static void +@@ -105,7 +103,7 @@ establish_timeout (PerfHelperApp *app) + { + g_clear_handle_id (&app->timeout_id, g_source_remove); + +- app->timeout_id = g_timeout_add (opt_idle_timeout * 1000, on_timeout, app); ++ app->timeout_id = g_timeout_add_once (opt_idle_timeout * 1000, on_timeout, app); + g_source_set_name_by_id (app->timeout_id, "[gnome-shell] on_timeout"); + } + +diff --git a/src/shell-polkit-authentication-agent.c b/src/shell-polkit-authentication-agent.c +index 6815f01..62676bd 100644 +--- a/src/shell-polkit-authentication-agent.c ++++ b/src/shell-polkit-authentication-agent.c +@@ -262,7 +262,7 @@ auth_request_initiate (AuthRequest *request) + static void auth_request_complete (AuthRequest *request, + gboolean dismissed); + +-static gboolean ++static void + handle_cancelled_in_idle (gpointer user_data) + { + AuthRequest *request = user_data; +@@ -278,8 +278,6 @@ handle_cancelled_in_idle (gpointer user_data) + { + auth_request_complete (request, FALSE); + } +- +- return FALSE; + } + + static void +@@ -293,7 +291,7 @@ on_request_cancelled (GCancellable *cancellable, + * + * https://bugzilla.gnome.org/show_bug.cgi?id=642968 + */ +- id = g_idle_add (handle_cancelled_in_idle, request); ++ id = g_idle_add_once (handle_cancelled_in_idle, request); + g_source_set_name_by_id (id, "[gnome-shell] handle_cancelled_in_idle"); + } + diff --git a/debian/patches/st-Use-one-shot-idle-timeout-functions.patch b/debian/patches/st-Use-one-shot-idle-timeout-functions.patch new file mode 100644 index 000000000..75e0abc19 --- /dev/null +++ b/debian/patches/st-Use-one-shot-idle-timeout-functions.patch @@ -0,0 +1,108 @@ +From: =?utf-8?q?Florian_M=C3=BCllner?= +Date: Fri, 31 Oct 2025 18:13:04 +0100 +Subject: st: Use one-shot idle/timeout functions + +GLib added one-shot variants of the idle/timeout functions a while ago. + +While they don't save a lot of code, they serve as a clear marker that +the callback is only invoked once. + +Part-of: +(cherry picked from commit 6f52b3a7b1740ad26eba616d8fa88c82441fabca) +Origin: upstream, 49.4, commit:f3cec01904e36a3a1b3d74a9eab6d7b3f4b6c43f +--- + src/st/st-icon-theme.c | 6 ++---- + src/st/st-theme-context.c | 11 ++--------- + src/st/st-widget.c | 5 ++--- + 3 files changed, 6 insertions(+), 16 deletions(-) + +diff --git a/src/st/st-icon-theme.c b/src/st/st-icon-theme.c +index 4563c0d..da84cfa 100644 +--- a/src/st/st-icon-theme.c ++++ b/src/st/st-icon-theme.c +@@ -493,7 +493,7 @@ free_dir_mtime (IconThemeDirMtime *dir_mtime) + g_free (dir_mtime); + } + +-static gboolean ++static void + theme_changed_idle (gpointer user_data) + { + StIconTheme *icon_theme; +@@ -503,8 +503,6 @@ theme_changed_idle (gpointer user_data) + g_signal_emit (icon_theme, signals[CHANGED], 0); + + icon_theme->theme_changed_idle = 0; +- +- return FALSE; + } + + static void +@@ -512,7 +510,7 @@ queue_theme_changed (StIconTheme *icon_theme) + { + if (!icon_theme->theme_changed_idle) + { +- icon_theme->theme_changed_idle = g_idle_add (theme_changed_idle, icon_theme); ++ icon_theme->theme_changed_idle = g_idle_add_once (theme_changed_idle, icon_theme); + g_source_set_name_by_id (icon_theme->theme_changed_idle, "theme_changed_idle"); + } + } +diff --git a/src/st/st-theme-context.c b/src/st/st-theme-context.c +index 8007c38..6393181 100644 +--- a/src/st/st-theme-context.c ++++ b/src/st/st-theme-context.c +@@ -346,13 +346,6 @@ on_font_name_changed (StSettings *settings, + pango_font_description_free (font_desc); + } + +-static gboolean +-changed_idle (gpointer userdata) +-{ +- st_theme_context_changed (userdata); +- return FALSE; +-} +- + static void + on_icon_theme_changed (StTextureCache *cache, + StThemeContext *context) +@@ -364,8 +357,8 @@ on_icon_theme_changed (StTextureCache *cache, + * icon_name => icon lookup, faking a theme context change is a good way + * to force users such as StIcon to look up icons again. + */ +- id = g_idle_add ((GSourceFunc) changed_idle, context); +- g_source_set_name_by_id (id, "[gnome-shell] changed_idle"); ++ id = g_idle_add_once ((GSourceOnceFunc) st_theme_context_changed, context); ++ g_source_set_name_by_id (id, "[gnome-shell] st_theme_context_changed"); + } + + /** +diff --git a/src/st/st-widget.c b/src/st/st-widget.c +index 1299b1c..226141a 100644 +--- a/src/st/st-widget.c ++++ b/src/st/st-widget.c +@@ -1518,7 +1518,7 @@ find_nearest_visible_forward (ClutterActor *actor) + return next; + } + +-static gboolean ++static void + st_widget_update_child_styles (StWidget *widget) + { + StWidgetPrivate *priv = st_widget_get_instance_private (widget); +@@ -1546,7 +1546,6 @@ st_widget_update_child_styles (StWidget *widget) + } + + priv->update_child_styles_id = 0; +- return G_SOURCE_REMOVE; + } + + static void +@@ -1557,7 +1556,7 @@ st_widget_queue_child_styles_update (StWidget *widget) + if (priv->update_child_styles_id != 0) + return; + +- priv->update_child_styles_id = g_idle_add ((GSourceFunc) st_widget_update_child_styles, widget); ++ priv->update_child_styles_id = g_idle_add_once ((GSourceOnceFunc) st_widget_update_child_styles, widget); + } + + static void diff --git a/debian/patches/st-password-entry-Update-input-hints-when-toggling-passwo.patch b/debian/patches/st-password-entry-Update-input-hints-when-toggling-passwo.patch new file mode 100644 index 000000000..903eb32f2 --- /dev/null +++ b/debian/patches/st-password-entry-Update-input-hints-when-toggling-passwo.patch @@ -0,0 +1,56 @@ +From: Joan Torres Lopez +Date: Thu, 29 Jan 2026 13:46:19 +0100 +Subject: st/password-entry: Update input hints when toggling password + visibility + +Set the HIDDEN_TEXT hint when the password is hidden and remove it +when shown. This ensures IBus is aware when it should hide pre-edit +text. + +Part-of: +(cherry picked from commit 7d3437cbd0f412391d4918a799d8bff1c72c4b12) +Origin: upstream, 49.4, commit:68a6eb56634b31a364adc6cdb4f4f4475aaa2a17 +--- + src/st/st-password-entry.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/src/st/st-password-entry.c b/src/st/st-password-entry.c +index b55d7b1..8c6204f 100644 +--- a/src/st/st-password-entry.c ++++ b/src/st/st-password-entry.c +@@ -238,6 +238,7 @@ st_password_entry_init (StPasswordEntry *entry) + clutter_text_set_password_char (clutter_text, BLACK_CIRCLE); + + st_entry_set_input_purpose (ST_ENTRY (entry), CLUTTER_INPUT_CONTENT_PURPOSE_PASSWORD); ++ st_entry_set_input_hints (ST_ENTRY (entry), CLUTTER_INPUT_CONTENT_HINT_HIDDEN_TEXT); + + g_signal_connect (clutter_text, "notify::password-char", + G_CALLBACK (clutter_text_password_char_cb), entry); +@@ -317,6 +318,7 @@ st_password_entry_set_password_visible (StPasswordEntry *entry, + { + StPasswordEntryPrivate *priv; + ClutterText *clutter_text; ++ ClutterInputContentHintFlags hints; + + g_return_if_fail (ST_IS_PASSWORD_ENTRY (entry)); + +@@ -331,11 +333,19 @@ st_password_entry_set_password_visible (StPasswordEntry *entry, + { + clutter_text_set_password_char (clutter_text, 0); + st_icon_set_icon_name (ST_ICON (priv->peek_password_icon), "view-conceal-symbolic"); ++ ++ hints = st_entry_get_input_hints (ST_ENTRY (entry)); ++ hints &= ~CLUTTER_INPUT_CONTENT_HINT_HIDDEN_TEXT; ++ st_entry_set_input_hints (ST_ENTRY (entry), hints); + } + else + { + clutter_text_set_password_char (clutter_text, BLACK_CIRCLE); + st_icon_set_icon_name (ST_ICON (priv->peek_password_icon), "view-reveal-symbolic"); ++ ++ hints = st_entry_get_input_hints (ST_ENTRY (entry)); ++ hints |= CLUTTER_INPUT_CONTENT_HINT_HIDDEN_TEXT; ++ st_entry_set_input_hints (ST_ENTRY (entry), hints); + } + + g_object_notify_by_pspec (G_OBJECT (entry), props[PROP_PASSWORD_VISIBLE]); diff --git a/debian/patches/st-spinner-content-Fix-CoglTexture-leak.patch b/debian/patches/st-spinner-content-Fix-CoglTexture-leak.patch new file mode 100644 index 000000000..6e827561f --- /dev/null +++ b/debian/patches/st-spinner-content-Fix-CoglTexture-leak.patch @@ -0,0 +1,63 @@ +From: Sebastian Keller +Date: Wed, 21 Jan 2026 19:50:33 +0100 +Subject: st/spinner-content: Fix CoglTexture leak + +Most of the members were getting indirectly freed via the +st_spinner_content_set_actor (spinner, NULL) and the subsequent +st_spinner_content_invalidate () on destruction of the actor or +changing of its content when the spinner is stopped. +The texture however was not freed. + +This now frees all members explicitly on finalize. + +208 (96 direct, 112 indirect) bytes in 1 blocks are definitely lost in loss record 20,960 of 22,464 + at 0x4D37833: g_type_create_instance (gtype.c:1877) + by 0x4D1C186: g_object_new_internal.part.0 (gobject.c:2666) + by 0x4D1E0FA: g_object_new_internal (gobject.c:2982) + by 0x4D1E0FA: g_object_new_valist (gobject.c:3004) + by 0x4D1E488: g_object_new (gobject.c:2479) + by 0x5A8B7CB: _cogl_texture_2d_create_base (cogl-texture-2d.c:84) + by 0x572D668: st_spinner_content_paint_content (st-spinner-content.c:175) + by 0x50D2C07: clutter_actor_paint_node (clutter-actor.c:3471) + by 0x50D2C07: clutter_actor_continue_paint (clutter-actor.c:3726) + by 0x511D4F9: clutter_paint_node_paint (clutter-paint-node.c:867) + by 0x50D9717: clutter_actor_paint (clutter-actor.c:3670) + by 0x574199A: st_viewport_paint (st-viewport.c:483) + by 0x50D2C42: clutter_actor_continue_paint (clutter-actor.c:3728) + by 0x511D4F9: clutter_paint_node_paint (clutter-paint-node.c:867) + +Part-of: +(cherry picked from commit ba0c4bda8083b0190ce5e0f38255b6e7b6fcffcf) +Origin: upstream, 49.4, commit:29ff06bb7c98bc1840f2ac48744abc725bd62e6d +--- + src/st/st-spinner-content.c | 14 ++++++++++++++ + 1 file changed, 14 insertions(+) + +diff --git a/src/st/st-spinner-content.c b/src/st/st-spinner-content.c +index 925667c..810e654 100644 +--- a/src/st/st-spinner-content.c ++++ b/src/st/st-spinner-content.c +@@ -77,9 +77,23 @@ st_spinner_content_init (StSpinnerContent *spinner) + { + } + ++static void ++st_spinner_content_finalize (GObject *gobject) ++{ ++ StSpinnerContent *spinner = ST_SPINNER_CONTENT (gobject); ++ ++ g_clear_object (&spinner->timeline); ++ g_clear_object (&spinner->actor); ++ g_clear_object (&spinner->texture); ++ g_clear_object (&spinner->buffer); ++ ++ G_OBJECT_CLASS (st_spinner_content_parent_class)->finalize (gobject); ++} ++ + static void + st_spinner_content_class_init (StSpinnerContentClass *klass) + { ++ G_OBJECT_CLASS (klass)->finalize = st_spinner_content_finalize; + } + + static void diff --git a/debian/patches/style-Adjust-padding-for-close-button-in-message-list.patch b/debian/patches/style-Adjust-padding-for-close-button-in-message-list.patch new file mode 100644 index 000000000..8b7528570 --- /dev/null +++ b/debian/patches/style-Adjust-padding-for-close-button-in-message-list.patch @@ -0,0 +1,24 @@ +From: Ramez Medhat +Date: Sat, 17 Jan 2026 17:33:54 +0200 +Subject: style: Adjust padding for close button in message list + +Part-of: +(cherry picked from commit 10bbebad14d1c38b45cb43c05f066641cd62961c) +Origin: upstream, 49.4, commit:1a3b4691baae6b5af13ffe994dad4506b98d7464 +--- + data/theme/gnome-shell-sass/widgets/_message-list.scss | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/data/theme/gnome-shell-sass/widgets/_message-list.scss b/data/theme/gnome-shell-sass/widgets/_message-list.scss +index 6be1400..55f0b04 100644 +--- a/data/theme/gnome-shell-sass/widgets/_message-list.scss ++++ b/data/theme/gnome-shell-sass/widgets/_message-list.scss +@@ -152,7 +152,7 @@ + // add margin to close button to balance it with the expand button + .message-close-button { + margin: $base_padding * 0.5; +- padding: 4px; ++ padding: $base_padding; + } + } + diff --git a/debian/patches/swipeTracker-Handle-invalid-position-when-finding-previou.patch b/debian/patches/swipeTracker-Handle-invalid-position-when-finding-previou.patch new file mode 100644 index 000000000..0be11d5cd --- /dev/null +++ b/debian/patches/swipeTracker-Handle-invalid-position-when-finding-previou.patch @@ -0,0 +1,39 @@ +From: =?utf-8?q?Florian_M=C3=BCllner?= +Date: Wed, 4 Feb 2026 14:12:25 +0100 +Subject: swipeTracker: Handle invalid position when finding previous point + +Commit 8e29babca8adc677 switched to `findLastIndex()` to find +the previous point, which inadvertently changed what value is +returned for invalid input. + +Restore the old fallback value and log a stacktrace, so we can +hopefully track down what causes the invalid input. + +Related: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8856 +Part-of: +(cherry picked from commit eb9caf0028be0d5740fc419e7e865584c0f52cab) +Origin: upstream, 49.4, commit:ae67cb03f75d485da73e7c2af25da67aa772c807 +--- + js/ui/swipeTracker.js | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +diff --git a/js/ui/swipeTracker.js b/js/ui/swipeTracker.js +index 1bf66b0..9abc598 100644 +--- a/js/ui/swipeTracker.js ++++ b/js/ui/swipeTracker.js +@@ -523,7 +523,14 @@ export const SwipeTracker = GObject.registerClass({ + } + + _findPreviousPoint(pos) { +- return this._snapPoints.findLastIndex(p => p <= pos); ++ const index = ++ this._snapPoints.findLastIndex(p => p <= pos); ++ if (index !== -1) ++ return index; ++ ++ console.trace(`Invalid position ${pos}`); ++ // also out-of-bounds, but somehow callers fail less hard than with -1 ++ return this._snapPoints.length; + } + + _findPointForProjection(pos, velocity) { diff --git a/debian/patches/tray-Use-one-shot-idle-timeout-functions.patch b/debian/patches/tray-Use-one-shot-idle-timeout-functions.patch new file mode 100644 index 000000000..472d1b718 --- /dev/null +++ b/debian/patches/tray-Use-one-shot-idle-timeout-functions.patch @@ -0,0 +1,56 @@ +From: =?utf-8?q?Florian_M=C3=BCllner?= +Date: Fri, 31 Oct 2025 18:13:32 +0100 +Subject: tray: Use one-shot idle/timeout functions + +GLib added one-shot variants of the idle/timeout functions a while ago. + +While they don't save a lot of code, they serve as a clear marker that +the callback is only invoked once. + +Part-of: +(cherry picked from commit cc1e00e8783beb443d50a5db1d59f5232604e2f5) +Origin: upstream, 49.4, commit:00f9f73b4a5289b1dcfbdc189f5f2b34effb3944 +--- + src/tray/na-xembed.c | 8 +++----- + 1 file changed, 3 insertions(+), 5 deletions(-) + +diff --git a/src/tray/na-xembed.c b/src/tray/na-xembed.c +index db51c41..5651768 100644 +--- a/src/tray/na-xembed.c ++++ b/src/tray/na-xembed.c +@@ -253,7 +253,7 @@ na_xembed_synchronize_size (NaXembed *xembed) + } + } + +-static gboolean ++static void + synchronize_size_cb (gpointer user_data) + { + NaXembed *xembed = user_data; +@@ -261,8 +261,6 @@ synchronize_size_cb (gpointer user_data) + + na_xembed_synchronize_size (xembed); + priv->resize_id = 0; +- +- return G_SOURCE_REMOVE; + } + + static void +@@ -299,7 +297,7 @@ na_xembed_resize (NaXembed *xembed) + priv->have_size = TRUE; + mtk_x11_error_trap_pop (xdisplay); + +- priv->resize_id = g_idle_add (synchronize_size_cb, xembed); ++ priv->resize_id = g_idle_add_once (synchronize_size_cb, xembed); + } + + static gboolean +@@ -851,7 +849,7 @@ na_xembed_set_root_position (NaXembed *xembed, + priv->root_y = y; + + if (priv->resize_id == 0) +- priv->resize_id = g_idle_add (synchronize_size_cb, xembed); ++ priv->resize_id = g_idle_add_once (synchronize_size_cb, xembed); + } + + MetaX11Display *